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