是否有一种简单的方法可以将整个Python标准库“编译”为字节码?如果是这样,就这也保证了Python从不重新“编译”一个文件,如果相应的.pyc
文件已经存在(只要标准库未更新或修改)?将整个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代码,无论它是否有助于解决上述情况。
如果是这样的话,你应提交与Python的人的错误。但原则上,解释器应在下次需要时重新编译一个已损坏.pyc文件的模块。 –
我只是试图通过创建一个0字节的文件'C重现此:\ Python27 \ LIB \ hmac.pyc'并以交互式Python会话中运行'进口hmac'。该文件被重新创建为5kb的大小,并且我没有收到错误。 我有一个来自同事的0字节Python文件的信息。我看到的实际错误是每当运行Python时都会得到异常,并且重新安装Python可以解决问题。它是否由损坏的.pyc文件引起的未知。我会更新我的问题。 –
据http://stackoverflow.com/a/17030047/2279059的Python文件损坏可能在Python 2.x中是可能的,而Python的3.3有机制防止腐败的发生。 –