![](/img/trans.png)
[英]Python job breaks when I update the imported module's code while it is running (using pytorch dataloader) — Why?
[英]Python import works when running module but breaks when this module is imported
我有这样的目录结构:
source\
main\
bar.py
run.py
A\
foo.py
bar.py
具有foo.py
需要的功能,因此我from bar import *
使用它,因为我为foo.py
了找到bar.py
的正确路径,因此它可以bar.py
。 我通过运行foo.py
并从bar.py
调用任何函数而不在其旁边附加bar
来验证这一点。 例如,如果myFun
定义在bar.py
,我可以简单地叫myFun(...)
在foo.py
。 到目前为止,一切正常。
run.py
导入foo.py
但是,当我尝试从foo.py
运行一个函数, foo.py
该函数又使用了从bar.py
导入的函数时,Python声称myFun(...)
不存在。 请注意, myFun
最初是在bar.py
定义的。
NameError: global name 'myFun' is not defined
我设法解决此问题的唯一方法是将myFun
复制到foo.py
,但这并不是真正的解决方案。
只要您有其他选择,就应该避免摆弄导入路径。 在这种情况下,请创建空文件main\\__init__.py
和A\\__init__.py
以便Python将这些目录识别为包,用main.bar
中的foo.py
替换bar
并从顶级源目录运行它。
现在,将函数从foo.py
导入到run.py
应该很容易:
from A.foo import fooFun1, fooFun2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.