我有一个更大的项目,基于python。有一些外部模块,如水泥,PIL或boto3,以及一些自己的编码模块。一切正常,但应该正常。
我现在的想法是使用pyinstaller将整个应用程序编译为单个二进制文件。所以我用ubuntu 14设置了一个docker容器(与服务器上相同的版本和64位,脚本应该在生产中运行)。
完成了项目的编制pyinstaller --onefile app.py
编译后的脚本运行完美 - 但只在docker机器上(我在几个Linux发行版和版本上测试了这个,没有问题到处运行正常)。
在我将脚本放在工作服务器上后,我收到了错误消息:
Error -3 from inflate: incorrect header check
Error decompressing PIL._imaging.so
Failed to write all bytes for PIL._imaging.so
所以我把它放在其他2台基于Linux Ubuntu的服务器上,我得到了同样的错误。
我的第一个想法是错误消息中提到的模块存在问题。所以我创建了一个非常愚蠢的演示.py脚本,它只是使用核心os模块并打印出一些字符串。
二进制文件再次在我的每个docker容器上运行良好,但不在服务器上运行。现在我得到了一个类似的错误,那就是:
Error -3 from inflate: incorrect header check
Error decompressing _bz2.so
Failed to write all bytes for _bz2.so
有人有同样的问题,或者知道这里有什么问题?
我用于编译的Python版本是3.3(Pyinstaller支持)
非常感谢