记录使用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  #开始打包,打包同一路径下的多个文件

你可能感兴趣的:(Error)