pipenv——python包管理工具

简介

Pipenv,包管理工具,可以为项目自动创建和管理虚拟环境并非常方便地管理 Python 包,我们可以简单理解为 pip、Pipfile 和 virtualenv 的集合体。现在它也已经是 Python 官方推荐的包管理工具。

总的来说,Pipenv 可以解决如下问题:

  • 我们不需要再手动创建虚拟环境,Pipenv 会自动为我们创建,它会在某个特定的位置创建一个 virtualenv 环境,然后调用 pipenv shell 命令切换到虚拟环境。
  • 使用 requirements.txt 可能会导致一些问题,所以 Pipenv 使用 Pipfile 和 Pipfile.lock 来替代之,而且 Pipfile 如果不存在的话会自动创建,而且在安装、升级、移除依赖包的时候会自动更新 Pipfile 和 Pipfile.lock 文件。
  • 广泛使用 Hash 校验,保证安全性。
  • 可以更清晰地查看 Python 包及其关系,调用 pipenv graph 即可呈现,结果简单明了。
  • 可通过自动加载 .env 读取环境变量,简化开发流程。

安装

$ pip install pipenv

检查当前目录是否有虚拟环境

$ pipenv --venv

设置虚拟环境创建位置(可选)

设置环境变量PIPENV_VENV_IN_PROJECT=1

linux系统中可在.bash_profile或.bashrc中加入

export PIPENV_VENV_IN_PROJECT=1

windows系统就要在 控制面板 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 中添加。

创建虚拟环境

# 以当前系统安装的python版本为基础创建虚拟环境
# 先进入项目目录
$ pipenv install

# 下面的命令不推荐使用,因为这些命令并不能自动下载安装相应版本的python,而是在系统中寻找已有的python
# 创建python3的虚拟环境
$ pipenv --three

# 创建python2的虚拟环境
$ pipenv --two

# 创建具体版本的虚拟环境
$ pipenv --python 3.7

创建虚拟环境后,会在项目目录下生成两个文件Pipfile和Pipfile.lock。这两个文件是pipenv包的配置文件,代替virsualenv的requirement.txt文件。

使用版本管理工具进行项目提交时,可将Pipfile文件和Pipfile.lock文件一并提交,待其他开发克隆下载,根据此Pipfile运行命令pipenv install生成自己的虚拟环境。

Pipfile.lock文件是通过hash算法将包的名称和版本,以及依赖关系生成哈希值,可以保证包的完成性。

进入虚拟环境shell

$ pipenv shell

退出虚拟环境

exit

删除虚拟环境

$ pipenv --rm

显示虚拟环境信息

$ pipenv --venv

查看已安装包和依赖关系

$ pipenv graph

安装Python第三方模块包

$ pipenv install flask

卸载Python第三方模块包

# 卸载具体模块包
$ pipenv uninstall flask

# 卸载所有模块包
$ pipenv uninstall --all

安装所有在Pipfile.lock文件中指定的包

$ pipenv sync

查看帮助

pipenv --help

如果运行命令出错,可能是pipenv版本较老,升级下试试,

pip install pipenv –upgrade

检查模块安全性

pipenv check

删除虚拟环境中所有已安装模块,且不编辑Pipfile.lock

pipenv uninstall --all

删除一个已安装模块,且Pipfile.lock中删除

pipenv uninstall requests

创建一个新的Pipfile.lock

pipenv lock

常用命令

--where 项目文件路径
--venv  虚拟环境路径
--py      虚拟环境解释器路径
--envs  虚拟环境选项变量
--rm     删除虚拟环境
--site-packages  安装python解释器附带的包

lock  锁定并生成pipfile.lock
open  在编辑器中查看一个库
run   在虚拟环境中运行命令
update  卸载当前所有包,安装最新版本 + 模块  更新一个包

.env 文件:环境变量文件

echo "FOO=hello foo" > .env
pipenv shell
echo $FOO

参考链接:

https://my.oschina.net/u/2357619/blog/2995398

https://www.return520.com/posts/18616/

https://segmentfault.com/a/1190000015389565

posted @ 2020-11-11 15:48  pythoner_wl  阅读(221)  评论(0编辑  收藏  举报