ここで私は初めてのstackoverflow quesionを使います。私は答えを探しましたが、明確な答えが見つかりませんでした。ここに状況があります。私はこのような構造を持っている:Python:サブパッケージとメインパッケージの両方からサブパッケージモジュールをインポートする
myapp
package/
__init.py__
main.py
mod1.py
mod2.py
さて、このシナリオでは、main.pyから私はまたmod2.py.でインポートする必要がmod1.pyを、インポートしていますすべては私の輸入が次のようになり、正常に動作します:
main.py:
mod2.pyfrom mod1 import Class1
:
from mod1 import Class1
は、しかし、私はメインのフォルダに私のmain.pyを移動する必要があります構造体は、このように:
myapp
main.py
package/
__init.py__
mod1.py
mod2.py
そして今私はmod1をインポートする方法を変更する必要がありますEのmain.pyは:
from package.mod1 import Class1
しかし、何も起こることである「はImportError: 『MOD1』という名前はありませんモジュール」を取得しないようにするために、私はmod2.py内部の変更の同じ型を作成してもらってください:
をfrom package.mod1 import Class1
なぜですか? mod2はmod1と同じフォルダ/ pakcageにあります。なぜ、main.pyを変更すると、mod2内のインポートを変更する予定ですか?
mainはmod2をインポートしますか? – rassar
@rassar:はい、そうです。 – rbrtk
これが起こっている理由は、mainとmod2の両方がmod1をインポートし、mainが階層の上位にあるからです。 http://stackoverflow.com/questions/15174730/python-import-module-once-for-a-whole-package?rq=1 – rassar