73

組み込みモジュールと競合するモジュールがあります。たとえば、 でmyapp.email定義されたモジュールmyapp/email.py

myapp.emailコード内のどこでも問題なく参照できます。ただし、メール モジュールから組み込みのメール モジュールを参照する必要があります。

# myapp/email.py
from email import message_from_string

それ自体を見つけるだけなのでImportError、メソッド myapp.emailがないため、 が発生します。を試すと同じ問題が発生します。message_from_stringimport emailemail.message_from_string

Python でこれを行うためのネイティブ サポートはありますか、それとも「メール」モジュールの名前をより具体的なものに変更することに固執していますか?

4

1 に答える 1

100

この問題に対処するAbsolute and Relative Importsについて読みたいと思うでしょう。使用する:

from __future__ import absolute_import

それを使用すると、装飾のないパッケージ名は常にトップレベルのパッケージを参照します。from .email import ...次に、独自のパッケージにアクセスするには、相対インポート ( ) を使用する必要があります。

注:上記のfrom ...行は、使用している行の上にある 2.x Python.pyファイルに配置する必要がありimport ...ます。Python 3.x では、これがデフォルトの動作であるため、不要になりました。

于 2009-08-03T21:38:47.603 に答える