Python程序打包成exe文件
0x01 虚拟环境
虚拟环境是用于依赖项管理和项目隔离的python工具,它可以将python程序和pip包管理工具安装在本地的隔离目录中(非全局安装)。
在实际开发中,不同项目可能需要的python版本和项目的第三方依赖包的版本不同。在使用pyinstaller将python程序打包成exe可执行文件时,如果不将程序项目的依赖环境进行隔离,那么pyinstaller会自动将许多不必要的依赖包一起打包,会导致原本只要十几M大小的exe文件变成几十M甚至上百M,因此为了有效减少exe可执行文件的大小,必须使用虚拟环境进行隔离各程序项目环境。
0x02 pipenv 简介
pipenv发布于2017年1月,它是一种Python依赖管理工具,你可以把它看做是pip和virtualenv的组合体,它基于Pipfile的依赖记录方式,用于替代旧的记录方式requirements.txt。
pipenv会自动帮你管理虚拟环境和依赖文件,并且提供一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作。简而言之,它更方便、完善和安全。
0x03 pipenv 安装
使用如下命令进行安装
pip install pipenv# 或者python2 -m pip install pipenv# 或者python3 -m pip install pipenv
检测是否安装成功
pipenv --version
如果电脑上同时安装了python2和python3环境,则可能出现如下错误:
ValueError: Not a valid python path: 'D:/tools/python27/Scripts/python.exe'
解决办法就是降低pipenv版本
pip install pipenv==2018.10.13
0x04 pipenv 命令
1.创建虚拟环境
pipenv --two # 创建当前系统的python2版本的虚拟环境pipenv --three # 创建当前系统python3版本的虚拟环境
2.查看相关信息
pipenv --where # 查看项目位置pipenv --venv # 查看虚拟环境位置pipenv --py # 查看解释器信息
3.激活虚拟环境
pipenv shell # 激活当前项目的虚拟环境
4.安装/卸载依赖包到虚拟环境
在使用前要先更换pipenv的国内源,可选国内源如下:
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple/
打开pipfile,并替换国内源:
[[source]]url = "https://pypi.tuna.tsinghua.edu.cn/simple/" # 在这里替换成国内源verify_ssl = truename = "pypi"[packages][dev-packages][requires]python_version = "3.8"
在使用pipenv shell 激活环境时会自动在当前目录下生成一个pipfile文件。
由于pipenv中的pipfile文件默认是用官方源,导致下载速度过慢,如果不换成国内源,安装卸载依赖包时会卡住,出现如下报错:
Locking [dev-packages] dependencies…
Locking [packages] dependencies…# 执行到这里会长时间卡住......pipenv.patched.notpip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
更换完国内源后,就可以正常安装卸载依赖包了
#安装依赖包pipenv install 依赖包名# 或者pip install -r requirements.txt# 卸载依赖包pipenv uninstall 依赖包名# 查看已安装的依赖包结构pipenv graph
5.退出虚拟环境
exit
# 或者
exit()
6.删除虚拟环境
pipenv --rm # 删除当前项目的虚拟环境
0x05 打包成exe文件
创建虚拟环境
pipenv --three
进入虚拟环境
pipenv shell
安装pyinstaller
pipenv install pyinstaller
安装python程序依赖包
pipenv install 依赖包名
将python程序打包成exe可执行文件
pyinstaller -F 程序名.py
执行成功后会在当前目录下生成dist目录,打包好的exe文件就在其中。
参考文章
https://blog.csdn.net/qq_40018994/article/details/109146966
https://www.cnblogs.com/blueberry-mint/p/13362737.html
https://blog.csdn.net/jpch89/article/details/81952416