记录使用pyinstaller打包exe文件踩的坑

1.打包文件过大的解决

最近在用python3.6做一个小项目,项目需要打包为exe文件来使用,使用pyinstaller打包后的exe竟有200多M,于是在网上一通搜索之后找到了解决办法,就是创建一套虚拟环境专门用来生成exe文件,windows系统下cmd命令如下:

pip install pipenv  #安装pipenv  
cd /d E:\pytestenv  #进入自定义虚拟环境路径
pipenv install  #创建虚拟环境	
pipenv shell  #激活虚拟环境	
pip list 	#使用该命令查看虚拟环境是否正常
pip install numpy   #安装自己程序所需要的模块	
pip install pyinstaller  #打包的模块也要安装	
pyinstaller -F  main.py xx.py yy.py  #开始打包,打包同一路径下的多个文件

打包时报错:
UnicodeDecodeError: ‘utf-8’ codec can’t decode …
解决办法 :根据报错提示信息找到对应的.py文件,修改如下:
str(pe.szExeFile.decode(‘utf-8’) 改为 str(pe.szExeFile.decode(‘gbk’)

2.运行exe文件报错的解决

经过上面的操作之后,再次使用上面的命令打包,生成的exe文件位于当前路径的dist里面,生成的exe文件确实小了很多,只有17M了,但是在执行时却报错了,报错信息如下:
failed to execute script pyi_rth_pkgres
于是使用如下命令进行打包,执行打包后的文件会提示调试信息:

pyinstaller -D  main.py xx.py yy.py 

调试信息如下:ModuleNotFoundError: No module named 'pkg_resources.py2_warn ,定位为setuptools版本过高,在虚拟环境下使用pip list查看setuptools版本为45,于是采取降级操作,在虚拟环境下输入:

pip uninstall setuptools
pip install setuptools==39.1.0

降级结束后继续使用上面的命令来打包exe文件,打包后的exe文件正常运行,至此所有问题已解决!

3.环境配置完成后打包操作

重新打开终端,打包只需要使用以下几个命令就可以。

cd /d E:\pytestenv  #进入自定义虚拟环境路径
pipenv shell  #激活虚拟环境	
pyinstaller -F  main.py xx.py yy.py  #开始打包,打包同一路径下的多个文件
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sven365

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

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

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

打赏作者

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

抵扣说明:

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

余额充值