我在Windows 7上使用Canopy版本:1.4.1(64位)。
我有两个文件A.py
和B.py
。 A.py
包含一些模块,B.py
导入A.py
个模块之一。当我在A.py
上更改内容然后运行B.py
时,应该创建一个新的已编译A.py
(A.pyc
),但在使用canopy IDE时则不是这样。
但重启内核后,A.py
会被编译(Ctrl +。)。
有没有办法重新编译A.py
而无需重新启动内核?
请帮帮我。谢谢!
答案 0 :(得分:3)
这与Canopy本身无关。这就是Python的一般工作方式。加载模块后,如果更改模块,则不会重新加载/重新编译模块。如其他答案之一所示,reload
可以避免这种情况。过去有过不同尝试的自动重载机制,但没有一个特别强大,导致比他们解决的问题更多的麻烦。
缓存行为将在任何Python会话中发生(Canopy,IPython前端,如笔记本,控制台等,常规python shell,服务器进程......)。
还有其他方法可以解决此问题。在IPython和Canopy中,您可以使用!python
命令来执行代码,就像在shell上一样。
答案 1 :(得分:0)
在python 2上,您可以重新加载模块:
reload(A)
在python 3上,您需要导入重新加载:
from importlib import reload
reload(A)
答案 2 :(得分:0)
不确定这是否符合问题,但您也可以使用:
python -m compileall。
从命令行指向您的模块目录。