将整个Python标准库编译为字节代码是否可行且可行?

时间:2017-05-05 07:39:33

标签: python python-2.7 pyc

有没有一种简单的方法可以将整个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代码,无论它是否有助于解决上述情况。

1 个答案:

答案 0 :(得分:1)

使系统.pyc文件只读,即使对于管理员也是如此。这应该可以防止Python不必要地修改它们。

如果您在Windows上,请转到属性→安全性→编辑,并拒绝所有组的所有权限。