解决pyinstaller打包后存在的程序加载慢、程序文件大等问题的处理方法
笔者在这几天尝试开发了一个小程序用于写实习生周报,在程序打包环节,碰到了一些小问题:
- 打包后的程序加载极慢,往往加载一个程序需要几秒钟甚至一分钟
- 打包后的程序文件很大,对于整体使用很不合适
针对上述的问题,我查到原因是在于打包库pyinstaller在打包时会链接到系统python环境而并非虚拟环境,所以需要构建一个与本地环境无关的环境来实现隔离下的打包,这里我选择的是pipenv
库来操作。
pipenv
库相比于其他虚拟环境的库的优势在于环境比较隔离,在使用上会比较合适,下面是安装代码:
pip install pipenv
安装好之后,新建一个新的项目来打包程序,在文件夹的地址栏输入cmd,进入到命令行环境中,并输入以下代码为虚拟环境安装python3.9:
pipenv install python=3.9
接着输入下面代码,进入到虚拟环境下:
pipenv shell
接着,将完整的代码脚本复制到环境下,在环境中修改Pipfile
文件,下面提供一个文件模板以供修改,将需要的库进行引用即可,需注意,该文件需要为gbk编码环境才可以对文档进行读取:
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = false
name = "pip_conf_index_global"
[packages]
chinese-calendar = "==1.9.1"
greenlet = "==3.0.3"
lxml = "==5.2.2"
numpy = "==1.26.4"
pandas = "==1.3.4"
pillow = "==10.3.0"
pyqt5 = "==5.15.10"
pyqt5-qt5 = "==5.15.2"
pyqt5-sip = "==12.13.0"
python-dateutil = "==2.9.0.post0"
python-docx = "==1.1.2"
pytz = "==2024.1"
six = "==1.16.0"
sqlalchemy = "==1.4.49"
typing-extensions = "==4.12.1"
tzdata = "==2024.1"
[dev-packages]
接着使用pipenv install
进行库安装,安装完之后可以在环境下使用python *.py
测试脚本运行即可,接着pip install pyinstaller
安装pyinstaller库,就可以开始打包了,打包可以详情关注如何修改spec文件,这里不做赘述,使用pyinstaller *.spec
进行打包即可,需要注意这里的*都表示你的文件名,该种方式打包后的文件往往大小会比原来小一半左右。