是否有一種簡單的方法可以將整個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有機制防止腐敗的發生。 –