私はこのようなプロジェクト構造を持っています...
/some_app
build/
README
out.py
some_app/
__init__.py
mod1.py
mod2.py
今度は、トリックをいじることなく、some_app
パッケージをにインポートしたいと思います。私がしたのは...mod2
sys.path
# mod2.py
import some_app
コマンドラインからmod2.pyを実行すると
some_app $ python mod2.py
エラーをスローしますImportError: No module named some_app
しかし、out.py
ファイル内では、
# out.py
import some_app.mod2
そしてします
some_app $ python out.py
それは完璧に動作します。
したがって、起こっているのはこれです。同じパッケージ内にあるモジュールにパッケージをロードしてから、そのモジュールを__main__
ファイルとして実行しますが、機能しません。次に、同じモジュール(私が__main__
実行したモジュール)を別のモジュール内にロードしてから、その別のモジュールを__main__
-として実行すると、動作します。
誰かがここで何が起こっているのか詳しく説明してもらえますか?
アップデート
some_app
パッケージ内のモジュールを直接インポートできた可能性があるため、これを行う直接的な理由はないことを理解しています。私がこれを試している理由は、Djangoプロジェクトでは、これが彼らが行っていることだからです。たとえば、このファイルを参照してください
すべてのモジュールで、すべての非標準インポートは。で始まりdjango.
ます。だから私は彼らがなぜそしてどのようにそれをしているのか疑問に思いました。
更新2
関連リンク