【问题标题】:Enthought Canopy does not create .pyc fileEnthought Canopy 不会创建 .pyc 文件
【发布时间】:2015-03-17 10:50:59
【问题描述】:

我在 Windows 7 上使用 Canopy 版本:1.4.1(64 位)。

我有两个文件 A.pyB.pyA.py 包含一些模块,B.py 导入 A.py 的模块之一。当我在A.py 上更改某些内容然后运行B.py 时,应该创建一个新编译的A.py (A.pyc),但在使用canopy IDE 时情况并非如此。

不过,A.py 在重新启动内核 (Ctrl+.) 后会被编译。

有没有办法重新编译A.py 而无需重新启动内核?

请帮助我。谢谢!

【问题讨论】:

    标签: python enthought canopy


    【解决方案1】:

    这与 Canopy 本身无关。这就是 Python 的一般工作方式。加载模块后,如果您更改它,则不会重新加载/重新编译它。正如其他答案之一所建议的那样,可以使用reload 避免这种情况。过去曾尝试过不同的自动重载机制,但没有一个特别强大,造成的麻烦比解决的问题多。

    缓存行为将发生在任何 Python 会话中(Canopy、IPython 前端,如笔记本、控制台等、常规 Python shell、服务器进程……)。

    还有其他方法可以解决此问题。在 IPython 和 Canopy 中,您可以使用 !python 命令来执行您的代码,就像您在 shell 上一样。

    【讨论】:

    • 在发布之前,我已经在命令行中对其进行了测试。正如我所预料的那样,A.py 的变化确实在运行B.py 时被选中。但现在我明白了,我并没有考虑 Python 会话。 !python 足以解决问题。谢谢!
    【解决方案2】:

    在 python 2 上,您可以重新加载模块:

    reload(A)
    

    在 python 3 上你需要导入 reload:

    from importlib import reload
    reload(A)
    

    【讨论】:

      【解决方案3】:

      不确定这是否适合这个问题,但您也可以使用:

      python -m 全部编译。

      从命令行指向你的模块目录。

      【讨论】:

      • 这也有效,当您不介意编译所有内容时,它会更方便。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多