【问题标题】:Cannot find .pyc files for django/apache/mod_wsgi找不到 django/apache/mod_wsgi 的 .pyc 文件
【发布时间】:2012-08-30 19:46:13
【问题描述】:

我正在使用 mod_wsgi/apache 在 python2.7 上运行 Web 应用程序。一切都很好,但我找不到任何 .pyc 文件。它们不是用 mod_wsgi 生成的吗?

【问题讨论】:

    标签: python django mod-wsgi pyc


    【解决方案1】:

    默认情况下,apache 可能对您的 django 应用目录没有任何写入权限这是一件好事安全方面。

    现在,每次 apache 重启后,Python 都会重新编译您的代码,然后将其缓存在内存中。

    因为它是一个长寿的过程,所以没关系。

    注意:如果您真的想拥有这些 pyc,请授予您的 apache 用户对源目录的写入权限。

    注意 2:当您从 apache 共享的测试实例 manage.py 开始时,这会造成很多混乱,因为这会将这些 pyc 创建为 root,并且如果您随后运行 apache,尽管源代码发生更改,也会保留它们。

    【讨论】:

    • 虽然没有充分的理由允许在 Apache 下生成 pyc。您应该设置 Apache,以便 Web 进程能够长期存在,在这种情况下,让它们在不经常启动的情况下如此阅读是不值得的,因为所提到的不同所有权可能会出现问题。
    【解决方案2】:

    当第一次导入模块时,或者当源比当前编译文件更新时,通常会在与.py 文件相同的目录中创建一个包含已编译代码的.pyc 文件。 因此,如果您不导入模块,则不会创建任何文件。

    除此之外,可能无法创建.pyc 文件是目录的权限问题。例如,如果您作为一个用户开发但作为另一个用户运行,例如如果您正在使用 Web 服务器进行测试,则可能会发生这种情况。如果您正在导入模块并且 Python 有能力(权限、可用空间等)将编译后的模块写回目录,则 .pyc 文件的创建是自动的。

    注意 - 运行脚本不被视为导入,不会创建 .pyc

    如果您需要为未导入的模块创建.pyc 文件,可以使用py_compilecompileall 模块。

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2012-03-17
      • 1970-01-01
      • 2017-09-02
      • 2012-12-01
      相关资源
      最近更新 更多