Pyinstaller在容器中创建工作二进制文件,但不在服务器

时间:2017-04-20 14:03:11

标签: python python-3.x pyinstaller

我有一个更大的项目,基于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支持)

非常感谢

0 个答案:

没有答案