什么是Pipenv
Pipenv是Kenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt)。
在这篇文章里,我将会以旧的依赖管理工作流程作为对比来介绍Pipenv的基本用法,更详细的用法可以参考Pipenv文档,或是Kenneth Reitz在PyCon 2018的演讲《Pipenv: The Future of Python Dependency Management》。
顺便说一句,《Flask Web开发实战》中所有示例程序都使用了Pipenv进行依赖管理。
提示 如果你对virtualenv的用法以及虚拟环境的概念不熟悉的话,可以通过专栏的旧文《Flask出发之旅》进行简单的认识。
为什么使用Pipenv
Pipenv会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作。简而言之,它更方便、完善和安全。你可以通过Pipenv文档开头的介绍来了解它的详细特性。Pipenv的slogan是“Python Dev Workflow for Humans”,作为人类,当然应该尝试一下……
如何使用Pipenv
假设我们要编写一个博客程序,项目的依赖是Flask和Flask-WTF。顺便说一句,可以使用下面的命令安装Pipenv:
$ pip install pipenv
以前我们搭建虚拟环境需要学习使用virtualenv和virtualenvwrapper,在虚拟环境内管理软件依赖包需要学习使用pip, 而有了pipenv, 前面几个就可以不用学了...
以前我们需要将虚拟环境依赖包的导出为requirements.txt, 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成Pipfile和Pipfile.lock, Pipfile会随着项目,当我们安装时只需在Pipfile和Pipfile.lock所在的目录下运行pipenv install
快速创建并进入虚拟环境
前提条件: 系统已安装python2和python3
# 创建python3环境
pipenv --three
# 创建python2环境
pipenv --two
# 在上一步新建环境的目录下,运行此命令才有效
pipenv shell
在虚拟环境管理依赖包
- 安装依赖包 yagmail requests
pipenv install yagmail requests
- 查看已安装软件
pipenv graph
- 删除依赖包yagmail
pipenv uninstall yagmail
- 退出虚拟环境
exit
扩展命令(不看也没关系)
- 查看虚拟环境python解释器所在位置
pipenv --py
查看虚拟环境所在位置
pipenv --venv
- 使用更底层的命令pip freeze
pipenv run pip freeze
- 只在安装开发阶段使用的软件包(和npm类似)
pipenv install pytest --dev
- 安装Pipfile.lock的所有包(完整移植开发环境)
pipenv sync
小结:
pipenv借鉴了npm管理包的方式, 与virtualenv和virtualenvwrapper相比, pipenv对新手要更友好一些,推荐学习~