Python のインポート。また...
私はこのファイル構造を持っています:
[test]
start.py (from scripts import main)
[scripts]
__init__.py (empty)
main.py (from . import install)
install.py (from scripts import main # or # from . import main)
インポートエラーが発生します:
vic@wic:~/projects/test$ python3 start.py
Traceback (most recent call last):
File "start.py", line 2, in <module>
from scripts import main
File "/home/vic/projects/test/scripts/main.py", line 1, in <module>
from . import install
File "/home/vic/projects/test/scripts/install.py", line 1, in <module>
from scripts import main
ImportError: cannot import name main
vic@wic:~/projects/test$
わかりません:初めてfrom scripts import main
機能しました(「機能した」とは、で失敗しなかったことを意味しますImportError
)、2回目は同じコードが得られますImportError: cannot import name main
何が起こっている?
アップデート:
私の質問は、循環インポートに関するものではありません。まったく同じコードがfrom scripts import main
最初は正常に機能し、2 回目は失敗するという事実に混乱しています。
私が理解していない内部インポートメカニズムがあると思います。
最初にステートメントがモジュールをインポートし、2 回目はまったく同じコードがモジュールから名前をインポートしようとします。これはどのように機能しますか?