【发布时间】:2012-08-30 19:46:13
【问题描述】:
我正在使用 mod_wsgi/apache 在 python2.7 上运行 Web 应用程序。一切都很好,但我找不到任何 .pyc 文件。它们不是用 mod_wsgi 生成的吗?
【问题讨论】:
标签: python django mod-wsgi pyc
我正在使用 mod_wsgi/apache 在 python2.7 上运行 Web 应用程序。一切都很好,但我找不到任何 .pyc 文件。它们不是用 mod_wsgi 生成的吗?
【问题讨论】:
标签: python django mod-wsgi pyc
默认情况下,apache 可能对您的 django 应用目录没有任何写入权限这是一件好事安全方面。
现在,每次 apache 重启后,Python 都会重新编译您的代码,然后将其缓存在内存中。
因为它是一个长寿的过程,所以没关系。
注意:如果您真的想拥有这些 pyc,请授予您的 apache 用户对源目录的写入权限。
注意 2:当您从 apache 共享的测试实例 manage.py 开始时,这会造成很多混乱,因为这会将这些 pyc 创建为 root,并且如果您随后运行 apache,尽管源代码发生更改,也会保留它们。
【讨论】:
当第一次导入模块时,或者当源比当前编译文件更新时,通常会在与.py 文件相同的目录中创建一个包含已编译代码的.pyc 文件。
因此,如果您不导入模块,则不会创建任何文件。
除此之外,可能无法创建.pyc 文件是目录的权限问题。例如,如果您作为一个用户开发但作为另一个用户运行,例如如果您正在使用 Web 服务器进行测试,则可能会发生这种情况。如果您正在导入模块并且 Python 有能力(权限、可用空间等)将编译后的模块写回目录,则 .pyc 文件的创建是自动的。
注意 - 运行脚本不被视为导入,不会创建 .pyc。
如果您需要为未导入的模块创建.pyc 文件,可以使用py_compile 和compileall 模块。
【讨论】: