Pipenv 是一个类似于Ruby下的Bundler、Node.js下的npm的一个包管理工具,主要是为应用程序的用户和开发人员提供一种设置工作环境的简单办法。它会自动为项目创建并管理一个virtualenv,并在 安装/卸载 包时从 Pipfile中 添加/删除 包。它还会生成非常重要的 Pipenv.lock 文件,用于生成确定性构建。
$ pip install pipenv
.env
文件,则会自动加载。Pipenv的主要命令有 install,uninstall 和一个会生成 Pipfile.lock 文件的 lock 命令。这些命令主要用于替代 pip install 和 pip uninstall 命令,以及手动virtualenv管理(要激活virtualenv,请运行 pipenv shell 命令)。
shell
命令将会生成一个激活了virtualenv的shell。run
命令将在virtualenv中运行给定的命令,并且包括所有附加的参数。check
命令断言当前环境是否满足 PEP 508需求。graph
命令将会把所有已安装的依赖项以漂亮的图表打印出来。如果使用的bash shell,请将以下代码添加到 .bashrc 或 .bash_profile 文件内:
eval "$(pipenv --completion)"
如果使用的fish shell,请将以下代码添加到 ~/.config/fish/completions/pipenv.fish 文件内:
eval (pipenv --completion)
$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Options:
--where 输出项目根目录相关信息
--venv 输出virtualenv相关信息
--py 输出Python解释器相关信息
--envs 输出环境变量选项
--rm 删除virtualenv
--bare 最小化输出
--completion 命令自动补全
--man 显示man页面
--three / --two 在创建virtualenv时使用Python3或Python2
--python TEXT 指定创建virtualenv时使用的具体的Python版本
--site-packages 为virtualenv启用site-packages [env变量:PIPENV_SITE_PACKAGES]
--clear 清除缓存(pipenv,pip和pip-tools)[env变量:PIPENV_CLEAR]
--pypi-mirror TEXT 指定一个PyPI镜像
--version 显示版本信息并退出
-h, --help 显示帮助信息并退出
使用示例:
创建一个项目,并明确指定使用Python3.7:
$ pipenv --python 3.7
删除项目的virtualenv (inferred from current directory):
$ pipenv --rm
为项目安装所有依赖项 (including dev):
$ pipenv install --dev
创建包含pre-releases的lockfile文件:
$ pipenv lock --pre
将已安装的依赖项显示为图表:
$ pipenv graph
检查已安装的依赖项是否存在安全漏洞:
$ pipenv check
安装一个本地的setup.py到你的虚拟环境或Pipfile:
$ pipenv install -e .
使用原生的pip命令:
$ pipenv run pip freeze
Commands:
check 根据 Pipfile 中提供的PEP 508标记检查安全漏洞
clean 卸载所有 Pipfile.lock 未指定的包
graph 显示当前安装的依赖项的关系图信息
install 如果未指定要安装的包,则会安装 Pipfile 中的所有包,否则,只安装指定的包
lock 生成 Pipfile.lock 文件
open 在编辑器中查看给定的模块
run 运行virtualenv中已安装的命令
shell 在virtualenv内启动一个shell
sync 安装 Pipfile.lock 中指定的所有的包
uninstall 卸载一个指定的包并将其从 Pipfile 中移除
update 先运行lock命令,在运行sync命令
定位项目目录:
$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test
定位virtualenv目录:
$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre
定位Python解释器:
$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python
安装包:
$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
Installing dependencies from Pipfile.lock...
...
To activate the virtualenv of this project, run the following:
$ pipenv shell
从git安装:
您也可以使用pipenv从git和其他版本控制系统安装包,安装时使用的URL遵从以下的规则:
<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#
惟一可选的部分是 @
部分。在git中使用SSH协议时,可以使用vcs的缩写和schema的别名git+git@
:
。
注意,这在解析时将被转换为 git+ssh://git@
。
vcs_type
可用的值包括 git
,bzr
,svn
和 hg
。schema可用的值包括 http
,https
,ssh
和 file
。
在特定情况下,您还可以访问其他schema:snv
可以和 snv
组合起来作为一个schema,bzr
可以与 sftp
和 lp
组合作为一个方案。
请注意,强烈建议您使用 pipenv install -e 以可编辑模式安装任何版本控制的依赖项,以确保每次执行依赖项解析时都可以使用存储库的最新副本执行,并且包含所有已知的依赖项。
要将位于 https://github.com/requests/requests.git
的git仓库中的标记 v2.19.1
安装为名为 requests的包,可以使用如下命令:
$ pipenv install -e git+https://github.com/requests/[email protected]#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/[email protected]#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/[email protected]#egg=requests to Pipfile's [packages]...
[...]
请参阅 pip实现对vcs的支持 以了解更多相关信息。
安装开发依赖项:
$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...
显示依赖项关系图:
$ pipenv graph
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2017.7.27.1]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: >=2.5,<2.7, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
生成lockfile文件:
$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev
安装所有开发依赖项:
$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
卸载所有依赖项:
$ pipenv uninstall --all
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!
使用shell:
$ pipenv shell
Loading .env environment variables…
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$