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