私は、他のpythonクラスからいくつかのサービス(S)を使用したいメインの実行pythonファイル(F)を持ってい ます。フォルダー構造は次のとおりです。
root/a/my file to execute -- (F)
root/b/python class I would like to use -- (S)
ファイル (F) 内で要求された Python クラス (S) を呼び出すにはどうすればよいですか?
ありがとう。
これはあまりにも明白かもしれませんが、他の回答には、モジュールb
がsys.path
. したがって、問題のフォルダー構造を想定し、ディレクトリにmodule と一緒にb
呼び出されるファイルが含まれていると想定すると、次の呪文が必要になります。__init__.py
s.py
# Add the b directory to your sys.path
import sys, os
parent_dir = os.getcwd() # find the path to module a
# Then go up one level to the common parent directory
path = os.path.dirname(parent_dir)
# Add the parent to sys.pah
sys.path.append(path)
# Now you can import anything from b.s
from b.s import anything
...
__init__.py
含めたいディレクトリにファイルを作成します。
src
したがって、2つのディレクトリがあり、一方はと呼ばれ、もう一方はと呼ばれると想像してみましょうutils
。
Main.py
ディレクトリ内にあり、にあるというファイル内で名前がsrc
付けられたクラスを使用したい場合は、次のようにすることができます。Network
Connections.py
utils
*.py
同じことが、ファイルを含む作成するすべてのフォルダーに適用されることに注意してください。たとえば、私たちが持つことができfolder a, b, c
、あなたは単にそうすることができfrom a.b.c import Connections
ます、またはあなたのファイル名が何であれ...
1)ディレクトリ__init__.py
内にファイル(単に空にすることもできます)を作成してから、次の手順を実行します。utils
Main.py
from utils import Connections
my_instance = Connections.Network()
#Then use the instance of that class as so.
my_instance.whateverMethodHere()
ディレクトリは次のようになります。
root dir
- src
-__init__.py
- Main.py
- utils
-__init__.py
- Connections.py
詳細については、Pythonのドキュメントを確認してください。 http://docs.python.org/tutorial/modules.html#packages
上記のリンクのように、Pythonパッケージに関するもう少しの情報と私たちが使用する理由__init__.py
:
パッケージをインポートするとき、Pythonはsys.path上のディレクトリを検索して、パッケージのサブディレクトリを探します。
Pythonがディレクトリをパッケージを含むものとして扱うようにするには、init.pyファイルが必要です。これは、文字列などの一般的な名前のディレクトリが、後でモジュール検索パスで発生する有効なモジュールを意図せずに非表示にするのを防ぐために行われます。最も単純なケースでは、init .pyは空のファイルにすることができますが、パッケージの初期化コードを実行したり、後で説明するall 変数を設定したりすることもできます。