Python「ClassA」と呼ばれるクラスと、別のPython「ClassB」であるClassAをインポートするクラス。ディレクトリ構造は次のとおりです。
MainDir
../Dir
..../DirA/ClassA
..../DirB/ClassB
ClassBがClassAを使用できるようにsys.path
を使用するにはどうすればよいですか?
あなたは本当にパッケージを使うべきです。次に、MainDirがsys.path上のファイルシステムのポイント(たとえば.../site-packages)に配置され、ClassBで次のように言えます。
from MainDir.Dir.DirA import ClassA # which is actually a module
__init__.py
という名前のファイルを各ディレクトリに配置するだけで、パッケージ階層になります。
質問に対する文字通りの答えとして、親ディレクトリからのPythonインポート':
現在のモジュールの親ディレクトリにある「mymodule」をインポートするには:
import os
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.sys.path.insert(0,parentdir)
import mymodule
編集する 残念ながら、__file__
属性は常に設定されているわけではありません。 parentdirを取得するより安全な方法は、検査モジュールを使用することです。
import inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
relative import (リンクの例、現在のモジュール-A.B.C
):
from . import D # Imports A.B.D
from .. import E # Imports A.E
from ..F import G # Imports A.F.G