言葉
構造は次のとおりです。モジュールtest
には 2 つのサブモジュールtest.foo
とが含まれますtest.bar
。
test.foo
Pythonのドキュメントに基づいinc()
て使用する関数があり、それを含める適切な方法であり、これは期待どおりに機能します。test.bar.bar()
from . import bar
test.bar
ただし、 にもinc2
を使用する機能がありますtest.foo.foo
が、を使用するfrom . import foo
と、これらのモジュールは両方とも壊れます。
これを達成するための正しい方法は何ですか? Pythonのドキュメントや検索ではほとんど見つかりませんでした。
コード
test / _init_.py
#empty
テスト/foo.py
from . import bar
def foo():
print("I do foo")
def inc():
print(bar.bar())
test/bar.py
from . import foo
def bar():
print("I do bar")
def inc2():
print(foo.foo())
エラー 1
>>> import test.foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test/foo.py", line 1, in <module>
from . import bar
File "test/bar.py", line 1, in <module>
from . import foo
ImportError: cannot import name foo
エラー 2
>>> import test.bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test/bar.py", line 1, in <module>
from . import foo
File "test/foo.py", line 1, in <module>
from . import bar
ImportError: cannot import name bar