pipenv 使用简介

以前在开发时一直使用 conda 使用做为虚拟环境管理工具,但有时候会常常会临时性的须要一个虚拟环境,
若是使用 conda create 建立一个新环境,耗时不说,有时候还忘了删除,最后系统里一堆的虚拟环境。
偶然发现 pipenv 后试用了一下,感受它的工做流相比以前虚拟环境环境加 requirements.txt
的方式更加简单方便。python

安装

pipenv 最好和 Python3 一块儿使用git

最简单的方式是经过 pip 安装github

pip3 install pipenv

若是是 mac 用户也能够经过 Homebrew 安装shell

brew install pipenv

若是没有安装 pip 能够经过如下方式安装bash

https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python

使用

建立新项目

mkdir myproject
pipenv install

这会在 myproject 文件下建立 PipfilePipfile.lock 文件,同时建立虚拟环境
虚拟环境名称为 pipenv 加项目路径哈希值,如 pipenv-7BgKv-oX工具

ll
-rw-r--r-- 1 rookie rookie 138 4月  20 20:24 Pipfile
-rw-r--r-- 1 rookie rookie 453 4月  20 20:24 Pipfile.lock

虚拟机环境默认位于 ~/.local/share/virtualenvs/,因为 pipenv 经过路径名哈希值与虚拟环境
创建映射关系,所以若是移动项目会致使虚拟环境不可用。能够经过在 .bashrc 添加
export PIPENV_VENV_IN_PROJECT=1 让 pipenv 在项目文件中建立虚拟环境,这时候虚拟环境位于 myproject/.venv 文件夹下。ui

若是项删除虚拟环境,在项目顶层目录下运行this

pipenv --rm

若是要指定 Python 版本,能够经过 --python 完成,如我要安装 python3.7 的虚拟环境url

pipenv --python 3.7

配置文件

# cat Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

[[source]] 模块指定了 pip 源位置,一般国内 pip 源加快下载速度spa

[[source]]
name = "tuna"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

安装和卸载 packages

你能够编辑 packages, 添加项目须要的 Python 库,如 requests='**',甚至能够指定不一样
平台下的包配置,详细配置参考 Advanced Usage of Pipenv
不过你能够经过pipenv install requests
来安装,pipenv 将会自动更新 PipfilePipfile.lock
[dev-packages] 则是一些开发依赖但不是项目依赖包的存放目录,如 pylint 等 pep8 检查工具
能够在安装时指定 pipenv install --dev将某个包声明为 dev-package
卸载 package 也很简单

pip uninstall

若是经过 pipenv 命令安装和卸载 package,安装或卸载完成后还会更新 Pipfile.lock 文件,有时候会卡在这个步骤。一般能够 ctrl+c 强制推出,删除 Pipfile.lock, 而后

pipenv lock

从新生成该文件

进入和退出虚拟环境

进入虚拟环境

cd myproject

pipenv shell

退出虚拟环境

pipenv exit

高级用法

有时候某些 package 须要指定特定的 pip 源,能够经过以下方式指定,很是简便

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
verify_ssl = false
name = "home"

[dev-packages]

[packages]
requests = {version="*", index="home"}
maya = {version="*", index="pypi"}
records = "*"

有时候须要生成 requirements.txt 文件

pipenv lock -r

若是只须要生成 dev-pakcages 列表,也很简单

pipenv lock -r --dev

自动载入环境变量文件。若是 .env 文件在项目根目录下,pipenv shellpipenv run
会自动载入文件中的环境变量。

$ cat .env
HELLO=WORLD

$ pipenv run python
Loading .env environment variables…
Python 2.7.13 (default, Jul 18 2017, 09:17:00)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['HELLO']
'WORLD'

pipenv 还支持自定义命令,这对于某些开发过程当中常常使用的命令来讲很是方便。
Pipfile 中添加 [scripts]

[scripts]
printspam = "python -c \"print('I am a silly example, no one would need to do this')\""

经过 pipenv run <custom_command> 便可运行自定义命令,如

pipenv run echospam "indeed"
I am really a very silly example indeed

更多高级用户能够参考 官方文档


最后欢迎关注个人 Blog-PrivateRookie

相关文章
相关标签/搜索