Enthought Canopy 不创建 .pyc 文件
Enthought Canopy does not create .pyc file
我在 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
?
请帮帮我。谢谢!
在 python 2 您可以重新加载模块:
reload(A)
在 python 3 您需要导入重新加载:
from importlib import reload
reload(A)
不确定这是否符合问题,但您也可以使用:
python -m compileall .
从命令行指向您的模块目录。
这与 Canopy 本身无关。这就是 Python 通常的工作方式。一旦加载了一个模块,如果你改变它就不是reloaded/recompiled。正如其他答案之一所建议的那样,可以使用 reload
来避免这种情况。过去有过不同的自动重载机制尝试,但 none 其中特别健壮,造成的问题比他们解决的问题更多。
缓存行为将在任何 Python 会话中发生(Canopy、IPython 笔记本、控制台等前端,常规 python shell,服务器进程,...)。
还有其他方法可以解决此问题。在 IPython 和 Canopy 中,您可以使用 !python
命令来执行您的代码,就好像您在 shell 上一样。
我在 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
?
请帮帮我。谢谢!
在 python 2 您可以重新加载模块:
reload(A)
在 python 3 您需要导入重新加载:
from importlib import reload
reload(A)
不确定这是否符合问题,但您也可以使用:
python -m compileall .
从命令行指向您的模块目录。
这与 Canopy 本身无关。这就是 Python 通常的工作方式。一旦加载了一个模块,如果你改变它就不是reloaded/recompiled。正如其他答案之一所建议的那样,可以使用 reload
来避免这种情况。过去有过不同的自动重载机制尝试,但 none 其中特别健壮,造成的问题比他们解决的问题更多。
缓存行为将在任何 Python 会话中发生(Canopy、IPython 笔记本、控制台等前端,常规 python shell,服务器进程,...)。
还有其他方法可以解决此问题。在 IPython 和 Canopy 中,您可以使用 !python
命令来执行您的代码,就好像您在 shell 上一样。