1

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

4

2 回答 2

1

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

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

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

注意:如果你真的想拥有这些 pyc,请给你的 apache 用户对源目录的写访问权限。

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

于 2012-08-30T19:58:07.830 回答
0

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

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

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

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

于 2012-08-30T20:01:21.453 回答