[英]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.