我是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。
感谢您提前获得任何帮助或关注。
答案 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'应该改变。
import test2
print test2.a
在此之后,每当我更改' test2.py'时,我运行代码reload(test2)
,然后使用%run test1
将给出a
的正确答案
以下链接是类似的问题,下面给出了更详细的解释。 Python: reload component Y imported with 'from X import Y'?