0

私は、他のpythonクラスからいくつかのサービス(S)を使用したいメインの実行pythonファイル(F)を持ってい ます。フォルダー構造は次のとおりです。

root/a/my file to execute -- (F)
root/b/python class I would like to use -- (S)

ファイル (F) 内で要求された Python クラス (S) を呼び出すにはどうすればよいですか?

ありがとう。

4

3 に答える 3

2

これはあまりにも明白かもしれませんが、他の回答には、モジュールbsys.path. したがって、問題のフォルダー構造を想定し、ディレクトリにmodule と一緒にb呼び出されるファイルが含まれていると想定すると、次の呪文が必要になります。__init__.pys.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
...
于 2013-01-28T17:12:40.857 に答える
1

__init__.py含めたいディレクトリにファイルを作成します。

srcしたがって、2つのディレクトリがあり、一方はと呼ばれ、もう一方はと呼ばれると想像してみましょうutils

Main.pyディレクトリ内にあり、にあるというファイル内で名前がsrc付けられたクラスを使用したい場合は、次のようにすることができます。NetworkConnections.pyutils

*.py同じことが、ファイルを含む作成するすべてのフォルダーに適用されることに注意してください。たとえば、私たちが持つことができfolder a, b, c、あなたは単にそうすることができfrom a.b.c import Connectionsます、またはあなたのファイル名が何であれ...

1)ディレクトリ__init__.py内にファイル(単に空にすることもできます)を作成してから、次の手順を実行します。utilsMain.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 変数を設定したりすることもできます。

于 2013-01-28T16:49:16.813 に答える