有没有一种简单的方法可以将整个Python标准库预编译为字节代码?如果是这样,如果相应的.pyc
文件已存在(只要标准库未更新或修改),这是否也能保证Python永远不会重新“编译”文件?
背景:在应用程序服务器上,Python有时会自发地进入一个破碎的状态,表现如下:
C:\> python
Traceback (most recent call last):
File "C:\Python27\lib\site.py", line 563, in <module>
main()
File "C:\Python27\lib\site.py", line 552, in main
aliasmbcs()
File "C:\Python27\lib\site.py", line 478, in aliasmbcs
enc = locale.getdefaultlocale()[1]
AttributeError: 'module' object has no attribute 'getdefaultlocale'
可以通过重新安装Python来解决。其他人告诉我,他已经看到了损坏的(0字节).pyc
文件,删除它们解决了这个问题。但是,我无法通过故意创建0字节.pyc
文件来重现该问题。
我不喜欢属于标准库的文件按需“编译”为字节代码的事实,因为这发生在运行Python和本机代码的进程中,可能会意外崩溃。我希望预先编译所有Python代码,无论它是否有助于解决上述情况。
答案 0 :(得分:1)
使系统.pyc
文件只读,即使对于管理员也是如此。这应该可以防止Python不必要地修改它们。
如果您在Windows上,请转到属性→安全性→编辑,并拒绝所有组的所有权限。