[英]Eclipse PyDev's Console cannot notice the change of imported file
我对PyDev和Python都是陌生的,并且正在寻求以下问题的帮助。 假设我有两个文件test1.py和test2.py,它们的内容如下:
from test2 import a
print a
a=1
当我运行控制台并使用%run test1
来运行代码test1.py时,一切都很好,我得到了输出1
。 但是,如果我更改了文件test2.py中的a值(例如从1更改为2),然后使用%run test1
,我仍然会得到1
。 我试图使用execfile('test2.py')
重新加载test2.py,但是它不起作用。
如果我使用终端运行代码,即python test1.py
,一切都会好起来的,只要我运行它,它就会注意到test2.py中的更改。 只有eclipse中的控制台很奇怪。
注意:我使用的操作系统是Windows 7。
感谢您的任何帮助或事先关注。
实际上,PyDev也有内置的解决方案:
启用User Module Deleter
在preferences > pydev > interactive console > user module deleter
,然后,代替的execfile或跑%,使用runfile('file_to_run.py')
-请注意,如果你有编辑器打开的PyDev,您可以使用Ctrl+Alt+Enter
为您将该语句发送到交互式控制台。
这样, runfile
将删除先前导入的所有模块,然后重新导入新模块...
另一个选择实际上是通过reload(module)
函数手动reload(module)
。
我找到了解决此问题的方法。 这样做的关键是命令reload()
。 但是不包含当前内容,因为从模块导入变量(例如, from test2 import a
是个坏主意。
因此,应更改文件“ test1.py”。
import test2
print test2.a
而在此之后,每当我改变了“test2.py”,我运行的代码reload(test2)
然后用%run test1
将给出正确的答案a
。
以下链接是类似的问题,下面将对此问题进行更详细的说明。 Python:重新加载用'from X import Y'导入的组件Y?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.