Pyinstaller 打包可执行文件的填坑路
打包可执行文件?
为了完成课程作业,要求要打包执行文件,身为一名渣渣小白应该如何打包,只能查阅进行打包已经写好的程序,但是打包过程依旧是技术渣渣的填坑血路,花了一些时间解决问题,希望这篇文章可以助力”打包“路上的填坑”土拨鼠“们,不要像我一样浪费时间。
背景
这篇文章是基于完成相关源程序,源程序运行无误的情况下进行的。本人使用的是python3.6版本,windows 8.1版本。[感觉这影响不大,但还是稍作说明],是本人第一篇博客,有错误和不当的地方还请大家指正。
第一步:安装pyinstaller
安装前的准备
因为我之前已经下载过pywin32和wheel,所以这里就不介绍了,有一篇博客里面有详细介绍,可以通过下面链接查看:
https://blog.csdn.net/u013896064/article/details/80860569
简单的安装直接:
- pip install pywin32
- pip install wheel
安装pyinstaller
安装pyinstaller 老是下载失败,百度里有说晚上下载容易失败的情况,因为晚上的时候,美国是早上。后面通过镜像网站下载,下载快且无误,值得推荐。
1.通过镜像网站下载:
pip install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
或者
pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
2.直接通过pip 下载
pip install pyinstaller
3.通过官方网址下载文件后在通过pip安装,官方网址如下:
http://www.pyinstaller.org/downloads.html
4.通过github下载,github网址如下:
https://github.com/pyinstaller/pyinstaller
第3,4下载对应安装包并解压后在cmd窗口cd进入所要安装的目录即可。
第4种情况详细情况课查阅下面的博客:
https://blog.csdn.net/wardseptember/article/details/79965836
其他情况,论坛上有许多情况,看看有没有你的啰:
https://bbs.csdn.net/topics/392513744
或者你自己百度查阅其他文章吧。
下载对应的版本就可以了。我下载的是pyinstaller3.6版本。
第二步:生成可执行文件
安装好pyinstaller后,可谓是完成一部分了。
打开命令提示符窗口(cmd),然后cd到你的源程序所在位置。
cd操作
如果你的源程序不在c盘,cd e:/是不能直接到达e盘的,那么应该肿么办?
比如想要cd 到E:\diyiwenjian\wenjian1这个目录下,则执行下面程序即可:
cd /d E:\diyiwenjian\wenjian1
也就是在其他盘前面加上 /d ,注意是==/d==不是~~\d~~
生成build、dist文件夹和**.spec文件。
cd到要打包的py文件所在目录下后,直接pyinstaller **.py
直接pyinstaller的话,可以方便查看打包过程是否出现错误。
比如打包zhujiemian.py如下:
pyinstaller zhujiemian.py
执行后,生成完毕窗口会显示completed successfully的字样。也可看到.py所在文件工程文件夹下多了build和dist两个文件,还生成了.py文件对应的.spec文件。
然后点击进入dist文件,可以看到zhujiemian文件,点击进入zhujiemian文件,可以看到.py文件中所依赖的包等和zhujiemian.exe。
关联文件
再运行zhujiemian.exe前需要把zhujiemain.py关联的文件复制到此zhujiemian文件夹下。
暴力方法就是直接将zhujiemian.py所在工程文件中的其余文件复制到此zhujiemian文件下。[也就是将zhujiemian.py所在文件夹除了build和dist文件的其余文件都复制到该zhujiemian文件下]
然后点击运行zhujiemian.exe,如果可以运行,便大功告成;如果失败,显示Failed to execute script …等的话,会出现闪退的错误窗口,立刻截图,得到错误报告。
窗口显示缺失的支撑库及文件,根据窗口提示将所缺失的文件直接复制到所在zhujiemian文件夹即可。上图缺失的有我的工程文件,numpy文件中的某些文件,PyInstallor文件的某些文件。为了偷懒,我直接把整个工程文件,整个numpy和PyInstallor文件复制到zhujiemian文件下,然后再次点击zhujiemian.exe就可以运行。
虽然暴力复制占的内存大,但是速度快,为了偷懒便这样子啦~
好啦,终于解决,可以交作业了~