この構造は一例複数の相対輸入は3.5
pkg\
test\
__init__.py
test.py
__init__.py
source.py
another_source.py
another_source.py
class Bar():
def __init__(self):
self.name = "bar"
source.py
from another_source import Bar
class Foo():
def __init__(self):
self.name = "foo"
b = Bar()
test.py
from ..source import Foo
if __name__== "__main__":
f = Foo()
print(f.name)
あります
これでtest.pyを実行します。それは私が私の現在のパッケージの上に行くと
python -m pkg.test.test
を実行します。しかし、これは動作しませんし、私はすべてのanother_sourceを削除した場合のpythonは私にトレースバック
Traceback (most recent call last):
File "-\Python35\lib\runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "-\Python35\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "~\test\test.py", line 1, in <module>
from ..source import Foo
File "~\source.py", line 1, in <module>
from another_source import Bar
ImportError: No module named 'another_source'
を与えるために持っているanswerとして受け入れられてきたように それはうまくいくが、それは解決策ではない。
私の上の1つのディレクトリである場所からクラスをインポートするには、ここまできれいな方法がありますか?
'from pkg.source import Foo'を修正する必要があります。 –