使用PyInstaller将python打包成exe可执行程序。
安装PyInstaller: pip install pyinstaller
问题1:打包完成后会因为No such file or directionary报错,其原因在于有一些依赖性或自己写的程序里面包含了绝对路径,比如with open XXX as f这种在linux下只能引入绝对路径。
解决方法:在PyInstaller安装包下的hook目录中,新建一个hook-xxx.py文件,比如报错的原因在matplotlib,那么新建hook-matplotlib.py文件,写入:
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("matminer")
重新编译,问题解决。
问题2:linux上打包完成后,报错找不到.so动态库文件,将该安装包复制在当前要生成exe的目录中,如matplotlib,把site-package中的matplotlib复制到当前目录中,打包:
pyinstaller -F hello.py --add-data="matplotlib:."
重新编译,问题解决。