环境说明:
Python: 3.11.8
PyInstaller: 6.7.0
包用太新了真的可以遇到各种坑呀!整了我一天,一定要写一篇记录一下,不然都不知道时间都去哪了。我猜能看到这篇的都卡在第五点,因为第五点我试过搜索到的各种方法都没成功
1、出现错误 ModuleNotFoundError: No module named '_distutils_hack'
解决方案:setuptools版本太高,降低点
pip install -i Simple Index setuptools==57.5.0
2、使用命令pyinstaller -F xxxxx.spec无法打出包(不知道是不是我这个pyinstaller版本的问题,我看其他人也能用)
提示:makespec options not valid when a .spec file is given
解决方案:
用spec文件打包就不要加参数了,要配置的内容都在里面配置好就行。或者直接用
pyinstaller [主文件]-p[其他文件1]-p[其他文件2]
3、打包成exe文件后,打开exe文件闪退,闪退太快看不到信息
闪退太快了看不到信息怎么办----打开命令行,然后再命令行中输入你的exe文件的地址,像这样:
然后按回车,这样这个程序会依赖于你的这个命令行的窗口来执行(像容器一样),这样就可以看到报错信息。根据报错信息再解决,可能可以跳转到问题5
4、图标没有显示出来
把exe文件从dict中复制出来,就可以显示图片了。放到其它地方也可以显示图片,就是在dict里不行,还没想通为什么
5、打包多个py文件,打包后打开exe,一直提示ModuleNotFoundError: No module named '你自己写的模块'
过程:尝试过不论是用--hidden-import或者-p添加其它py文件,均无法解决
就是为了这个解决方案写的这篇,就是它!!!
解决方案一:
1、打包时不加-F,加 -D,生成一个目录;
2、打包完成后,把自己写的除了主程序外的py文件都复制到打包后的_internal文件夹中。再运行exe文件即可
如果就想打成一个exe文件,看方案二
解决方案二:
打包时加上 -p 文件路径,或者使用spec文件的pathex字段
用于搜索导入的路径列表(比如使用 PYTHONPATH),包括由 --p 选项给出的路径;
pyinstaller -p D:\003_workspace\pythonExec\tools_exec\to_excel -w -F .\main.py .\xmind_to_xlsx.py
特别鸣谢文章:pyinstaller如何将自己写的py模块一并打包到exe中_pyinstaller 打包软件时,自己编写的模块-CSDN博客下的一个评论,才找到这个尝试方向。
python多文件打包成exe简单过程(利用pyinstaller)_python文件转exe文件连带其他文件打包成exe文件-CSDN博客