2017-05-16 4 views
1

インポートスキーム:私はフォルダ構造を持っているPythonの私は、例えば、いくつかのファイルを他のファイルに依存Pythonライブラリを、記述しようとしています

../libname 
../libname/core.py 
../libname/supplementary1.py 
../libname/supplementary2.py 
../libname/__init__.py 

私はインポートどこにlibnameがあります。

core.pyファイルで始まる:

import supplementary1 
import supplementary2 

...いくつかのコードを...

と私はcore.pyのメインでそれをテストしている場合、これは、正常に動作します

私のプロジェクトではライブラリとしてlibnameを使いたいとしましょう。マイフォルダ構造は次のようになります。main.pyが実際にsupplementary1とsupplementary2から機能を必要とするcore.pyから機能を呼び出す

./libname 
./main.py 

私は(main.pyに)しようとした場合、現在、それは、何のsupplementary1がないと言って、私にエラーがスローされます

from core.py import function1 

私の質問は、私はその後、私のライブラリからファイルをインポートするにはどうすればよい、とは? 1つの選択肢は、すべてのコードをたとえばからコピーすることです。補足1をcore.pyに追加していますが、可能であれば、コードをエレガントに区切ります。

つまり、ローカルライブラリからいくつかのファイルをインポートしているファイルをどのようにインポートするのですか?

ありがとうございました。

答えて

0

import ...from ... import ...には、ファイル名ではなくモジュール名を記述する必要があります。 core.pyの代わりにlibname.coreと言ってください。これは、 "libnameのモジュールcore"(はsearched in all module pathsとなります。通常は起動したスクリプトのディレクトリ、つまりmain.pyの場所です)。

tl; dr:あなたの質問に対する簡単な答えは、代わりにfrom libname.core import function1と書いてください。ここでは、from .手段を「現在のパッケージから - - このファイル(モジュール)が内に存在する」

また、私はrelative imports、代わりにfrom . import supplementary1書き込みimport supplementary1のを使用することをお勧めしたいです。

Python documentation on modulesを読むことを検討してください - 多くの例と説明があります。

+0

ありがとう、それは私のためにそれを明確にします。 –

関連する問題