前言

最近用了pipenv感觉挺不错的,写篇博文来推广一下。

一、优点

  1. 自动关联项目相关的virtualenv,能够快速的加载virtualenv。
  2. 提供的pipenv替代pip并自带一个依赖清单Pipfile,和依赖锁定Pipfile.lock。
  3. 其中Pipfile除了依赖清单还支持固定pypi源地址,固定python版本。
  4. Pipfile还支持dev依赖清单.pipenv install的包会强制使用Pipfile中的源.
  5. 解决了pip install pandas时里的numpy依旧走官方pypi.
  6. 还有就是可以直接切换python2,3
  7. 使用pipenv graph命令可以看到依赖树

二、缺点

  1. windows上切入virtualenv,命令行开头无virtualenv名字。
  2. Pipfile中的pypi源无法默认设置,造成每次都需要手动修改。
  3. pipenv终究用的是virtualenv,无法像nvm这种做到python管理。
  4. python2,3切换时是删除上次的virtualenv,所以每次切换都要重新安装依赖。
  5. pipenv uninstall无法以依赖树的关系进行卸载。

三、快速使用

安装

pipenv作为一个python包,最快的安装方案当然是。

1
pip install pipenv

注意linux可能没有权限,如果有直接的系统包建议安装系统包

1
sudo pip install pipenv

原有项目使用

打开项目目录控制台执行下面命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# use python2
pipenv --two

# use python3
# pipenv --three

# use source doubanio
sed -i s/pypi.python.org/pypi.doubanio.com/g Pipfile

# install old packages
pipenv install -r requirements.txt

其中pipenv --two或者pipenv --three代表创建虚拟环境和Pipfile文件。

但是不安装依赖,然后通过sed修改pypi源,

默认设置Pipfile文件,我提了issues.

但是@kennethreitz,关闭了该issues,并且说了

not in scope

看来是不会有了。

然后就是进入与退出virtualenv

1
2
3
4
5
# 进入
pipenv shell

# 退出
exit

还有一个pipenv run的可以直接执行virtualenv环境下的命令。

新项目使用

1
2
3
4
5
6
7
8
# use python2
pipenv --two

# use python3
# pipenv --three

# use source doubanio
sed -i s/pypi.python.org/pypi.doubanio.com/g Pipfile

依旧是换源,接下来只需要pipenv install或pipenv install -d,来替代pip install即可。

pipenv –help

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --update         升级 pipenv, pip 到最新.
  --where          输出项目的目录信息.
  --venv           输出 virtualenv 的目录信息.
  --py             输出 Python 解析器的路径.
  --envs           输出环境变量的设置.
  --rm             删除当前 virtualenv.
  --bare           Minimal output.
  --completion     Output completion (to be evald).
  --man            显示使用手册.
  --three / --two  使用 Python 3/2 来创建 virtualenv
  --python TEXT    直接指定 Python 解析器.
  --site-packages  拷贝系统 site-packages 到 virtualenv.
  --jumbotron      An easter egg, effectively.
  --version        显示版本信息并退出.
  -h, --help       显示当前信息并退出.

Commands:
  check      检查安全漏洞和反对 PEP 508 标记在Pipfile提供.
  graph      显示当前依赖关系图信息.
  install    安装提供的包,并加入 Pipfile 的依赖清单中
  lock       生成 Pipfile.lock.
  open       在编辑器(vim)查看一个特定模块.
  run        在 virtualenv 中执行命令.
  shell      切换到 virtualenv 中.
  uninstall  删除提供的包,并清理 Pipfile 的依赖清单中.
  update     卸载当前所以依赖,然后安装最新包