pipenv简介

简介

Pipenv 是一个类似于Ruby下的Bundler、Node.js下的npm的一个包管理工具,主要是为应用程序的用户和开发人员提供一种设置工作环境的简单办法。它会自动为项目创建并管理一个virtualenv,并在 安装/卸载 包时从 Pipfile中 添加/删除 包。它还会生成非常重要的 Pipenv.lock 文件,用于生成确定性构建。

安装

$ pip install pipenv

Pipenv的功能

  • 启用真正的确定性构建,同时轻松地指定所需的内容。
  • 为锁定的依赖项生成并检查文件哈希。
  • 如果 pyenv可用,则会自动安装需要的Python版本。
  • 通过查找 Pipfile 自动递归地找到项目根目录。
  • 如果不存在 Pipfile,则会自动生成。
  • 在标准位置自动创建virtualenv。
  • 在 安装/卸载 包时从 Pipfile中 添加/删除 包。
  • 如果存在 .env 文件,则会自动加载。

Pipenv的主要命令有 installuninstall 和一个会生成 Pipfile.lock 文件的 lock 命令。这些命令主要用于替代 pip installpip uninstall 命令,以及手动virtualenv管理(要激活virtualenv,请运行 pipenv shell 命令)。

基本概念

  • 如果不存在virtualenv,则会自动创建。
  • 当以无参数的形式使用 install 命令时,会安装 [packages] 节点下所有的包。
  • 要初始化一个Python 3 的虚拟环境,请使用命令 pipenv --three
  • 要初始化一个Python 2 的虚拟环境,请使用命令 pipenv --two
  • 否则,将使用virtualenv的默认行为

其他命令

  • 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 可用的值包括 gitbzrsvnhg。schema可用的值包括 httphttpssshfile

在特定情况下,您还可以访问其他schema:snv 可以和 snv 组合起来作为一个schema,bzr 可以与 sftplp 组合作为一个方案。

请注意,强烈建议您使用 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.
$ 

你可能感兴趣的:(Python学习,python,pipenv)