IDLE Python无法检测到更改

3
我正在使用IDLE编写一些小型的Python程序。有两个类文件-node.py(节点类)和position.py(位置类)。我在main.py中有我的主模块代码,从中实例化Node和Position对象。
我注意到的是-当我更改node.py或position.py时,在使用F5检查模块然后运行它们时,只要所有文件都在IDLE中打开,更改不会反映回main.py中。我注意到我必须手动关闭所有三个.py文件,然后关闭IDLE,重新开始并运行main.py才能看到在node.py和position.py中所做的更改。
问题出在哪里?我的环境变量设置不正确吗?我在SO和在线上搜索,但没有找到令人满意的答案。
[详细信息:我在Ubuntu中使用IDLE版本2.7.3。所有三个.py文件和相应的.pyc字节码文件都在同一个目录中。该目录也出现在sys.path中]

你尝试使用Ctrl+F6重启解释器了吗? - Matthew Plourde
没有,你的意思是说每次我更改脚本中的内容都需要这样做吗? - user396089
是的,可能可以——还没有测试过。你也可以在 main.py 中的 node.py 和 position.py 的 import 语句下面放置 reload 语句。 - Matthew Plourde
1
明白了!问题在于我需要使用 "import node",但我在 main.py 中使用了 "from node import *"。这会阻止 main.py 链接到更新后的 node 模块! - user396089
2个回答

3
发生的情况是我需要使用“import node”,但我在main.py中使用了“from node import *”,这会阻止main.py链接到更新的node模块!(抱歉接受我的答案,但可能某个人以后也会遇到同样的问题,所以我上传了解决方案。)

0

我按照Matthew Plourde的建议使用Ctrl+F6。在Python 3和IDLE中,我会打开我的测试文件和核心文件。然后,我会在核心文件中修复测试文件中断言报告的错误,但测试文件不会看到更改。我唯一的解决方案是关闭并重新打开,这很麻烦。Ctrl+F6确实起作用。我找不到Python3中的重新加载函数。

我撤回这个说法。对于python3,如果您因缺乏管理员权限或其他安全原因而运行IDLE时出现“-n”,则需要导入imp并使用imp.reload(function)才能使IDLE捕获您正在编辑和调用的其他Python文件的任何更改。否则,Python将无法检测到更改并且不会重新加载文件。

http://docs.python.org/3.0/library/imp.html#imp.reload


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接