繁体   English   中英

Eclipse PyDev的控制台无法注意到导入文件的更改

[英]Eclipse PyDev's Console cannot notice the change of imported file

我对PyDev和Python都是陌生的,并且正在寻求以下问题的帮助。 假设我有两个文件test1.py和test2.py,它们的内容如下:

test1.py

from test2 import a
print a

test2.py

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 Deleterpreferences > 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”。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM