记录用pyinstaller打包含PyQt5模块代码的过程

  本人的python代码是在Windows环境下开发的,考虑到PyQt5模块可以跨平台,于是博主想将自己的python代码打包成可以在linux环境下运行的可执行程序。

  环境是Centos7,强烈建议使用python3.6.x版本,我在测试其他的python版本时,会出现各种各样的问题,比如python3.5导入 from PyQt5 import QtCore, QtGui, QtWidgets时会出现ImportError: /usr/local/lib/python3.5/site-packages/PyQt5/QtCore.so: undefined symbol: PySlice_AdjustIndices。但python3.6.3就不会。

  导入PyQt5:#pip3 install PyQt5,这个库有117.9mb,需要耐心等待一会儿。

  导入pyinstaller: #pip3 install pyinstaller,导入后输入pyinstaller -v可以查看版本。

  打包程序:#pyinstaller -F [yourpath]/x.py 例如的我的就是:  #pyinstaller -F /root/opt/code/test.py(-F 参数的作用是打包所有与test.py有关联的其他py文件)   打包完成后会在当前文件夹生成一个dist的文件夹,打包后的可执行程序就放在里面。

  在打包过程中,可能会遇到OSError: Python library not found: libpython3.6m.so.1.0, libpython3.6mu.so.1.0, libpython3.6.so.1.0提示报错,这是因为没有共享python lib库的问题。解决办法:重新编译python,在解压后的python文件夹里面打开终端运行./configure --enable-shared 编译完成后将ibpython3.6m.so.1.0, libpython3.6mu.so.1.0, libpython3.6.so.1.0复制到/usr/loacl/lib和/usr/local/lib64里面就行了。

  如果遇到No modules named PyQt5.sip,这是因为在你的代码里没有导入PyQt5.sip,但你用到的模块需要用到这个东西,这时你只需要手动导入该模块就行,比如:#pyinstaller -F --hidden-import PyQt5.sip /opt/code/test.py

你可能感兴趣的:(c,k)