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