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 安装
使用如下命令进行安装
1 | pip install pipenv |
检测是否安装成功
1 | pipenv --version |
如果电脑上同时安装了python2和python3环境,则可能出现如下错误:
1 | ValueError: Not a valid python path: 'D:/tools/python27/Scripts/python.exe' |
解决办法就是降低pipenv版本
1 | pip install pipenv==2018.10.13 |
0x04 pipenv 命令
1.创建虚拟环境
1 | pipenv --two # 创建当前系统的python2版本的虚拟环境 |
2.查看相关信息
1 | pipenv --where # 查看项目位置 |
3.激活虚拟环境
1 | pipenv shell # 激活当前项目的虚拟环境 |
4.安装/卸载依赖包到虚拟环境
在使用前要先更换pipenv的国内源,可选国内源如下:
1 | 阿里云:http://mirrors.aliyun.com/pypi/simple/ |
打开pipfile,并替换国内源:
1 | [[source]] |
在使用
pipenv shell
激活环境时会自动在当前目录下生成一个pipfile文件。
由于pipenv中的pipfile文件默认是用官方源,导致下载速度过慢,如果不换成国内源,安装卸载依赖包时会卡住,出现如下报错:
1 | Locking [dev-packages] dependencies… |
更换完国内源后,就可以正常安装卸载依赖包了
1 | #安装依赖包 |
5.退出虚拟环境
1 | exit |
6.删除虚拟环境
1 | pipenv --rm # 删除当前项目的虚拟环境 |
0x05 打包exe程序
创建虚拟环境
1 | pipenv --three |
进入虚拟环境
1 | pipenv shell |
安装pyinstaller
1 | pipenv install pyinstaller |
安装python程序依赖包
1 | pipenv install 依赖包名 |
将python代码打包成exe可执行文件
1 | pyinstaller -F 程序名.py |
执行成功后会在当前目录下生成dist目录,打包好的exe程序就在其中。