[英]Import in a module fails because __name__ is __main__
這是我的項目結構:
Project
main.py
myPackage/
subfolder1/
__init__.py
script11.py
script12.py
subfolder2/
__init__.py
script2.py
__init__.py
在main.py
我通過以下方式導入script2.py
:
from myPackage.subfolder2 import script2 as script2
然后,我從script2.py
中的main.py
調用一個函數:
bar = script2.foo()
在script2
我需要從script1
導入一個函數:
from ..subfolder1.script11 import my_function
它因錯誤而中斷:
attempted relative import with no known parent package
我檢查了__name__
變量,它確實具有__main__
值。 我怎樣才能正確地管理它?
所有你應該做的是改變你的進口main.py
,以from myPackage.subfolder2 import script2
。 我使用該導入以這種方式設置了一個目錄和一些文件,並且腳本按預期運行:
main.py
myPackage/
subfolder1/
script11.py
subfolder2/
script2.py
腳本11.py
def bar():
return 10
腳本2.py
from ..subfolder1.script11 import bar
def foo():
x = bar()
print('foo is', x)
主文件
from myPackage.subfolder2 import script2 as s2
s2.foo()
跑步:
>>> py .\main.py
foo is 10
一些注意事項:
__init__.py
文件不是制作包所必需的,但擁有它們不會有任何傷害。 如果你願意,你可以把它們放在外面。from subfolder2 import script2 as script2
的as script2
部分是多余的。 它將已作為script2
導入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.