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

时间:2016-01-14 15:57:05

标签: python eclipse console pydev

我是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。

感谢您提前获得任何帮助或关注。

2 个答案:

答案 0 :(得分:1)

实际上,PyDev也有内置的解决方案:

User Module Deleter启用preferences > pydev > interactive console > user module deleter,然后使用runfile('file_to_run.py')而不是execfile或%run - 请注意,如果您在PyDev中打开了编辑器,则可以使用{{1将该语句发送给交互式控制台。

通过这样做,Ctrl+Alt+Enter将删除先前导入的所有模块并重新导入新模块......

另一种选择是通过runfile函数手动重新加载。

答案 1 :(得分:0)

我找到了解决这个问题的方法。执行此操作的关键是命令reload()。但不是当前内容,因为从模块导入变量是个坏主意,即from test2 import a

所以文件' test1.py'应该改变。

test1.py

import test2
print test2.a

在此之后,每当我更改' test2.py'时,我运行代码reload(test2),然后使用%run test1将给出a的正确答案

以下链接是类似的问题,下面给出了更详细的解释。 Python: reload component Y imported with 'from X import Y'?