起因: 本地安装的模块太多,使用pyinstaller打包,会把许多无关模块打包进去,程序特别大。
如果能够创建一个虚拟的python环境,只安装要打包程序的依赖包就好了。
pipenv恰好能解决这个问题,pipenv安装的依赖包会保存至项目虚拟环境目录下,不会污染系统全局环境。
当然pipenv应用场景不止于此。
一、pipenv 介绍
pipenv是一个Python的包管理工具,它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。
pipenv主要有以下特点:
-
pipenv集成了pip,virtualenv两者的功能。
-
pipenv会在项目根目录下创建 Pipfile文件用于记录包的版本信息 、 Pipfile.lock 文件来锁定安装包的版本和依赖信息,管理包之间的依赖关系。
-
无需激活虚拟环境执行代码,只要有pipfile文件即可使用虚拟环境的依赖包执行python脚本,
如:通过执行命令pipenv run python xx.py
-
在一个新的项目根目录下执行 pipenv install,则他会自动创建一个虚拟环境,并且生成一个Pipfile文件;
当 install 命令没有传递参数指定安装包,如果当前存在Pipfile,则会自动安装所有Pipfile中的packages中的包。
二、快速上手使用pipenv
下面快速介绍pipenv的基本使用,本文的使用的是windows下的Python3.9。
2.1 安装pipenv
cmd窗体中,输入代码:
pip install pipenv
安装完成后,随意新建一个文件夹TEST2,cmd管理员权限切换到该文件夹路径下。
2.2 创建虚拟环境
方式1:安装指定python版本的虚拟环境: pipenv install --python 3.9
注:–python前面是两个横杠。要打包的.py项目文件用的什么python版本安装的第三方库,就安装什么python版本,(python版本不同安装的同名第三方库可能有差异),不然很可能打包出来的exe不能运行。
方式2:直接使用命令pipenv install
,在虚拟环境目录下新增一个虚拟环境
执行完后,可以看到当前目录下创建了 Pipfile 、 Pipfile.lock 文件。
Pipfile文件用于记录包的版本信息 ;
Pipfile.lock 文件来锁定安装包的版本和依赖信息,管理包之间的依赖关系;
Pipfile 文件可以复制到其他项目内,通过执行pipenv install命令, 根据这个 Pipfile 文件生成虚拟环境和依赖包的安装。
2.3 激活环境
在文件夹TEST2根目录中激活环境:pipenv shell
查看虚拟环境安装了什么模块:pip list
2.4 虚拟环境中安装项目依赖包
在激活的虚拟环境中安装需要的第三方库,跟正常在python中安装库是一样的,例如:pip install datetime
卸载库也是跟正常在python中卸载库是一样使用:pip uninstall datetime
2.5 检查项目在虚拟环境中是否能正常运行
将要运行的项目文件,放在文件夹TEST2根目录下,有两种方式运行:
方式1:在激活的虚拟环境中,cmd输入:python xxx.py
方式2:在未激活的虚拟环境状态下,文件夹TEST2根目录下cmd输入:pipenv run python xxx.py
(只要有Pipfile文件即可)
运行完程序未报错,则认为项目在该虚拟环境下能正常运行;
如果程序报错缺依赖包,再按上面2.4的步骤安装项目依赖包。
2.6 打包项目
在虚拟环境中安装打包工具:pip install pyinstaller
打包:pyinstaller -F xxx.py
,pyinstaller其它参数不做详细介绍。
如果下次要进入该虚拟环境,直接在文件夹TEST2根目录中,执行cmd语令pipenv shell
即可进入
2.7 删除虚拟环境
cmd中执行命令pipenv --rm
删除虚拟环境后,如果目录下仍存在 Pipfile 、 Pipfile.lock 文件,可以通过pipenv install重新进行安装虚拟环境,且重新安装的虚拟环境,名称与删除前一致。
若想退出虚拟环境,可输入 exit 退出
以上就是使用pipenv创建虚拟环境进行打包的整个流程。文章来源:https://www.toymoban.com/news/detail-762586.html
文章来源地址https://www.toymoban.com/news/detail-762586.html
到了这里,关于【python】使用pipenv创建虚拟环境进行打包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!