py打包exe的那些事
简单来说流程分为两大步:
1.通过cmd自动下载安装pyinstaller
2.通过cmd执行pyinstaller相关命令,生成exe
如此简单的过程依然遇到了很多问题,本文重点记录下解决这些问题的方法:
1.安装pyinstaller时遇阻:You are using pip version 10.1, however version 19.0.3 is available.
其实提示信息里已经明确了解决方法:You should consider upgrading via the "python -m pip install --upgrade pip" command.
so,cmd执行命令"python -m pip install --upgrade pip"即可。
2.安装pyinstaller时多次出现下载进度条未达到100%。
不用管,重复执行命令"pip install pyinstaller"。第一次执行时进度条特别慢,到20%就报错中止了。再次执行时进度条很快到100%,又接着出现很多其他下载的进度条,又有中止。再再次执行全部成功。
\XX\Anaconda2\Lib\site-packages里会生成PyInstaller和多个相关的下载文件夹和文件。
3.exe的生成路径是默认的命令行窗口路径下。
通常是在C:\Users\XX里生成build文件夹、dist文件夹、.spec文件。dist文件夹里有我们最终想要的exe。暂未找到自定义exe路径的方法。
PyInstaller通过spec文件来build,所以可以先只生成spec文件,手动修改内容后再执行spec命令,生成build和dist。尝试过修改spec文件内容,依然没有解决exe路径问题。
4.执行exe时闪退。
首先定位原因:build文件夹的warn.txt会记载打包问题,或者将exe拖到cmd命令里查看提示信息。
如果提示找不到模块dll,需要将程序用到的第三方库的包复制到py同目录下:可以在\XX\Anaconda2\Lib\site-packages里名称搜索,搜到文件的只需拷贝文件,只能搜到文件夹的就拷贝文件夹。然后再重新打包。
5.执行exe时带命令行调试窗口。
在指令内加入-w命令可以屏蔽,比如:pyinstaller -F D:\Projects\calc_exe.py -w
6.exe如何复制。
生成的一堆东西都可以删去,只保留exe。可以将exe单独复制到其他位置,不影响执行。
参考网址: