pyinstaller打包python程序快速上手及避坑指南

写程序个体户最后免不了遇到两个关卡,前端或者打包。
相对前端来讲,打包算是简单的,特别是有了pyinstaller的帮助。但是也有不少坑等着我们,没办法,踩坑是宿命,干就完了!
初试pyinstaller是失败的,打包后运行exe文件有无数报错,调了调,还是放弃了。
当时写的程序也稍微复杂了点,有wxpython在里面。这回写了简单一点的,只用了openpyxl、numpy、re和datetime四个包。
打开CMD,进入你所编写的python程序目录下,使用命令:

pyinstaller -F xxxxx.py

打包完成后,程序所在目录下新生成两个目录,一个是build目录,写入了一些日志文件和中间流程文件,另外一个dist目录里面才是我们需要的可执行文件。
参数-F设定为生成单个可执行文件,可多个参数组合使用。
如果想了解pyinstaller的更多信息,可通过pyinstaller -h来查看。
双击运行exe文件…忐忑…真的报错了:

ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[11248] Failed to execute script pyi_rth_pkgres

查了下,据说该报错和对python 2的兼容性有关。
解决方法:进入Python38\Lib\site-packages\pkg_resources\ 目录,找到init.py文件,用#注销掉语句:import(‘pkg_resources.py2_warn’),如图:
在这里插入图片描述
重新打包,大事可成!

我的系统信息:

117 INFO: PyInstaller: 3.6
118 INFO: Python: 3.8.2
118 INFO: Platform: Windows-10-10.0.19041-SP0

【补充】
打包成功后觉得意犹未尽,想再给程序加个图标。
网上有很多免费资源,下了个免费图标(png格式),又找个了网站在线转化成ico格式。
图标文件和要打包的程序文件放置于同一目录下,然后使用以下命令打包,和前面步骤不同的是多了个参数 -i 和完整的图标文件名p.ico。

pyinstaller -F -i p.ico reg_parser_1.0.py

【2021-04-01补充】
换了一台新电脑,家庭版win10操作系统,打包时报错Permission Denied Error,说明打包程序在读取文件时权限被限制。
找到了一个简单的解决办法:在运行CMD的时候以管理员身份运行,再按上述步骤运行,pyinstaller从而获得了足够的权限提升。
在这里插入图片描述
【2021-04-27补充】
很多人不喜欢控制台黑窗,我倒是需要,可以通过控制台在程序运行的时候print一些信息给使用者,这样就免于制作用户界面了,反正都是些用于提高效率的工作辅助小程序嘿嘿嘿。
如需增加控制台,在打包的时候加个参数c既可以了:

pyinstaller -F -c -i text.ico clicker_1.4.py

这个程序是用seleium操纵chromedriver实现的网页特定元素自动点击程序。打包之后,在使用的时候,一定要保证chromedriver和打包后的程序在同一目录下,否则程序会闪退,无法运行。
另外,chromedriver和chrome的版本一定要匹配,这个不用多说大家应该也知道。

【2021-12-14补充】
系统升级为win11之后,打包报错:

FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\qehs\\AppData\\Roaming\\pyinstaller\\bincache00_py39_64bit\\ucrtbase.dll'

一番功课坐下来,原来是360干的好事!
关了360,再打包,还是同样报错!
又一番功课坐下来,原来需要删除或清空bincache00_py39_64bit目录。
大功告成!

【发表是最好的记忆】

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值