分享

pipenv 入门教程

 wenxuefeng360 2022-08-07 发布于四川

Pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。它会自动为您的项目创建和管理一个virtualenv,并在安装/卸载包时从Pipfile中添加/删除包。它还生成非常重要的Pipfile.lock文件,用于生成确定性构建。

Pipenv 特性:

  • pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
  • 管理requirements.txt文件可能会有问题,而Pipenv使用Pipfile和Pipfile.lock 这使得对于基本用例来说更为优越。
  • 各个地方使用了哈希校验,不仅安全,且会自动公开安全漏洞。
  • 让您深入了解自己的关系依赖图(例如$ pipenv graph)。
  • 通过加载.env文件简化开发工作流程。

Pipenv 所解决的问题:

  1. requirements.txt 依赖管理的局限

使用 requirements.txt 管理依赖的时候可能会出现 不确定构建 (the build isn’t deterministic) 问题,举个栗子:
如果程序中要使用 TensorFlow 库,那么我们应该在requirements.txt里面写上

# requirements.txt:
TensorFlow 
...

由于没有指定版本,因此通过指令 pip install -r requirements.txt安装依赖模块时,会默认安装最新版本的TensorFlow ,如果新版本向后兼容,这完全不用care,但是如果不能向后兼容就会出现:代码无法在该环境运行,即测试环境和生产环境的同一份requirement.txt,结果出来2份不同的环境。再考虑模块本身的依赖等问题,会发现越来越令人头大。而Pipenv使用的Pipfile和Pipfile.lock文件则可以比较好的解决这些问题。

  1. 多个项目依赖不同第三方库、包版本问题

如应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,当我在A和B程序间切换时,需要不断检测–卸载–安装模块。这意味着只安装其中一个版本可能无法满足每个应用程序的要求,因此需要创建虚拟环境来将A、B程序所需的第三方包分隔开来,此时常用的 virtualenv、venv均可以满足要求,Pipenv也同样集成了该功能。

Pipenv 简单使用:

  1. Pipenv 安装
# pip 安装
pip3 install pipenv  # 全局安装,如果只想在当前用户模式下安装,可添加参数:--user
# 如需更新可使用
pip3 install --user --upgrade pipenv

注: 如果在使用当前用户模式下安装pipenv后在shell中提示不可用,则需要把用户库的目录“C:\Users\XXX\AppData\Roaming\Python\Python37\Scripts”添加到你的PATH【系统环境路径】中,然后重启电脑,环境变量生效后即可使用。

  1. Pipenv 常用命令
pipenv --two  # 使用当前系统中的Python2 创建环境
pipenv --three  # 使用当前系统中的Python3 创建环境

pipenv --python 3  # 指定使用Python3创建环境
pipenv --python 3.6  # 指定使用Python3.6创建环境
pipenv --python 2.7.14  # 指定使用Python2.7.14创建环境

注: 1)创建环境时应使用系统中已经安装的、能够在环境变量中搜索到的Python 版本,否则会报错。
2)每次创建环境都会在当前目录下生成一个名为Pipfile文件,用来记录刚创建的环境信息,如果当前目录下之前存在该文件,会将其覆盖。
3)在使用指定版本创建环境的时候,版本号与参数 --python 之间有个空格
使用Python3.6创建环境并查看生成的Pipfile文件内容:
在这里插入图片描述

pipenv shell  # 激活虚拟环境

环境经激活后,会发现命令提示符变了:(下图中的“pipenv-6sd8rYgi”前缀,表示生成了名为“pipenv-6sd8rYgi”的虚拟环境)
环境激活

pipenv --where  # 显示目录信息
pipenv --venv  # 显示虚拟环境信息
pipenv --py  # 显示Python解释器信息

在这里插入图片描述

pipenv install XXX  # 安装XXX模块并加入到Pipfile
pipenv install XXX==1.11  # 安装固定版本的XXX模块并加入到Pipfile

安装 jieba 库,并查看Pipfile变化:
pipenv install

pipenv graph  # 查看目前安装的库及其依赖

在虚拟环境中安装了jieba和requests两个库:
pipenv graph

pipenv check  # 检查安全漏洞

pipenv check

pipenv update --outdated  # 查看所有需要更新的依赖项
pipenv update  # 更新所有包的依赖项
pipenv update <包名>  # 更新指定的包的依赖项

检查需要更新的包并更新:(如果所有包依赖都为最新版,再执行更新时,将不会有变化)
pipenv update

pipenv uninstall XXX  # 卸载XXX模块并从Pipfile中移除
pipenv uninstall --all  # 卸载全部包并从Pipfile中移除
pipenv uninstall --all-dev  # 卸载全部开发包并从Pipfile中移除

卸载jieba库,并查看Pipfile文件变化:
pipenv uninstall

exit  # 退出当前虚拟环境

退出虚拟环境,命令行提示符前缀消失:
exit

pipenv --rm  # 删除虚拟环境

删除虚拟环境之后,再次运行pip shell 会发现先为这个project创建虚拟环境,然后再打开shell:
pipenv --rm

  1. requirements.txt 文件的兼容
  • pipenv可以像virtualenv一样用命令生成requirements.txt 文件
pipenv lock -r > requirements.txt  # 将Pipfile和Pipfile.lock文件里面的包导出为requirements.txt文件
pipenv lock -r --dev > requirements.txt  # 将Pipfile和Pipfile.lock文件里面的开发包导出为requirements.txt文件
  • pipenv 通过requirements.txt安装包:
pipenv install -r requirements.txt
pipenv install -r --dev requirements.txt  # 只安装开发包
  1. Python 文件的运行
  • 方式一: pipenv run python xxx.py
pipenv run python xxx.py
  • 方式二:在激活环境中运行
# 进入激活环境
pipenv shell
# 运行文件
python xxx.py

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多