2017-04-21 2 views
1

main_file.pysub_file.pyからインポートしたいと思いますが、私はinitファイルを設定しています。私は私のmain_file.pyに行うことができる午前:__init__を使用してPythonでトップレベルのファイルをインポートする方法

from sub_folder.sub_file import * 

私はそれを他の方法で回避を行う方法を知りませんが。

これは私の構造体である:

|+main_folder 
|--_init_.py 
|--main_file.py 
|++sub_folder 
|---_init_.py 
|---sub_file.py 
+0

'-'の代わりにアンダースコア(' _')を使用し、 'main_folder.main_file'をインポートしてください。 – lmiguelvargasf

+1

この[The Anatomy of a Python Project](http://infinitemonkeycorps.net/docs/pph/)に興味があります。 )。パッケージのように利用できるようにするには、コードの[編集可能なインストール](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs)を実行することができます。 – russau

+0

そのsudoのコードだけですが、試しましたが動作していないようです –

答えて

2

古い方法:

  • main_folderのディレクトリがあなたのsys.pathであることを確認します。
  • from main_folder import main_file

new, usually better way

  • from ..main_folder import main_file

これは、システムの輸入と衝突しませんという利点を有しています。 main_folderの名前をたとえばに変更した場合mathfrom math import my_funcは、にに応じて、この機能がないため、モジュールからまたはをインポートするため、クラッシュします。 OTOH from ..math import my_funcは必ず自分のモジュールからインポートします。

疑わしい場合は、実際に正しいディレクトリを確認しているかどうかを理解するために、失敗したインポートステートメントの前に常にprint sys.pathと入力してください。

関連する問題