pipenv的使用
2019-11-11 # Python

1.安装pipenv

1
pip install pipenv

这里要说的是记得用python3

然后在你的工程文件夹里打开终端,输入以下命令来建立一个虚拟环境。

1
pipenv install

接着就可以在你的文件夹里创建一个虚拟环境了,但如果你是在windows电脑上进行操作,会发生编码错误。错误源头是因为windows系统的文件默认编码是GBK, 但“virtualenv.py”这个文件下的

1
fs_encoding = sys.getfilesystemencoding()

不知道什么原因,未能探测出windows下的默认编码,所以解决方案就是手动修改。如下:

1
fs_encoding = 'gbk'

这是最快的解决方案了,所以感慨,Python在windows下还真是二等公民。

这一步后pipenv会在文件夹里创建”Pipfile” 和 “Pipfile.lock”这两个文件,其功能类似于node.js 下的package.js和package-lock.js这两个文件。

Pipenv会在你创建虚拟环境时自动创建Pipfile和Pipfile.lock文件(如果不存在),并且会在你使用pipenv install和pipenv uninstall命令安装和卸载包时自动更新Pipfile和Pipfile.lock。

附注:Pipfile用来记录项目依赖包列表,而Pipfile.lock记录了固定版本的详细依赖包列表。

2.激活pipenv 环境

1
$ pipenv shell

使用以上命令来激活pipenv环境。此外,Pipenv还提供了一个pipenv run命令,在该命令后附加的参数会直接作为命令在虚拟环境中执行,这允许你不必显式的激活虚拟环境即可在虚拟环境中执行命令。比如,pipenv run python会启动虚拟环境中的Python解释器。

3.使用pipenv来安装依赖

使用Pipenv,不管你是否激活了虚拟环境,都可以通过pipenv install命令安装:

1
$ pipenv install flask flask-wtf  

事实上,对一个新项目来说,你不必手动使用pipenv install来创建虚拟环境。当使用pipenv install xxx直接安装依赖包时,如果当前目录不包含虚拟环境,Pipenv会自动创建一个。

4.在部署环境安装依赖

使用Pipenv则只需要执行pipenv install,它会自动安装Pipfile中记录的依赖:

1
$ pipenv install

不得不说,这里确实像极了node.js

5.区分开发依赖

使用Pipenv时,你只需要在安装pytest时添加一个–dev选项,它会自动被分类为开发依赖(写入Pipfile的dev-packages一节中):

1
$ pipenv install pytest --dev

在新的开发环境安装依赖时,也只需要在pipenv install命令后添加–dev选项即可一并安装开发依赖:

1
$ pipenv install --dev

6 更换pipenv的安装源

安装Python包太慢?

A:Pipenv本身就是基于Pip,所以也可以更换PyPI源。只需要在Pipfile中更换对应的url即可。比如,下面的Pipfile使用阿里云提供的镜像源:

1
2
3
4
5
[[source]]

url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true
name = "pypi"

除了修改Pipfile,你也可以在执行安装命令时通过–pypi-mirror选项指定PyPI源,比如:

1
$ pipenv install --pypi-mirror https://mirrors.aliyun.com/pypi/simple

7 指定Python的版本信息

在创建虚拟环境的时候,我们可以指定使用的python版本信息,类似pyenv

1
2
3
$ pipenv --python 3
$ pipenv --python 3.7
$ pipenv --python 2.7.4

pipenv会自动扫描系统寻找合适的版本信息,如果找不到的话,同时又安装了pyenv, 它会自动调用pyenv下载对应的版本的python。我是没有安装pyenv,所以pipenv会提示我指明相应版本Python对应的路径。

总结

为了让你更轻松的过渡,Pipenv甚至提供了读取和生成requirements.txt文件的功能(在使用pipenv install命令时它会自动读取requirements.txt文件安装依赖并生成Pipfile文件)。希望这篇文章可以让你更快的上手Pipenv。

参考文档:

  1. https://crazygit.wiseturtles.com/2018/01/08/pipenv-tour/
  2. https://zhuanlan.zhihu.com/p/37581807