Pipenv 是一个旨在带来最好的包装世界的工具(捆扎师、作曲家、NPM、货物、纱线等)来到Python世界在我们的世界里,Windows是一等公民

它会自动为您的项目创建和管理一个虚拟环境,并在您的Pipfile当您安装/卸载软件包时。它还产生了非常重要的Pipfile.lock,它用于生成确定性构建。

GIF demonstrating Pipenv's usage

Pipenv寻求解决的问题是多方面的:

  • 您不再需要使用pipvirtualenv分开的。他们一起工作
  • 管理requirements.txt文件can be
    problematic
    ,因此Pipenv使用即将到来的PipfilePipfile.lock取而代之的是,对于基本用例,哪个更优越
  • 散列总是在任何地方使用。保安。自动暴露安全漏洞
  • 让您深入了解依赖关系图(例如$ pipenv graph)
  • 通过加载简化开发工作流.env文件

您可以在浏览器中快速播放Pipenv:

Try in browser

安装

如果您使用的是Debian Buster+:

$ sudo apt install pipenv

或者,如果您使用的是Fedora:

$ sudo dnf install pipenv

或者,如果您使用的是FreeBSD:

# pkg install py36-pipenv

或者,如果您使用的是Windows:

# pip install --user pipenv

当以上选项都不存在时,建议使用Pipx

$ pipx install pipenv

否则,请参阅documentation有关说明,请参阅

✨🍰✨

☤用户表彰

大卫·刚(David Gang)

这个包管理器真的很棒。这是我第一次确切地知道我安装的依赖项是什么,以及可传递依赖项是什么。再加上安装是确定性的这一事实,使得这个包管理器像货物一样是一流的

贾斯汀·迈尔斯·福尔摩斯

Pipenv最终是一种抽象,其目的是让头脑参与进来,而不仅仅是文件系统

☤功能

  • 真正实现确定性构建,同时轻松指定只有你想要的
  • 生成并检查锁定依赖项的文件哈希
  • 自动安装所需的Python,如果pyenv有空房吗?
  • 自动递归地查找您的项目主目录,方法是查找Pipfile
  • 自动生成一个Pipfile,如果不存在
  • 自动在标准位置创建一个Virtualenv
  • 自动将包添加/删除到Pipfile卸载/安装它们时
  • 自动加载.env文件(如果存在)

主要命令有installuninstall,以及lock,它会生成一个Pipfile.lock这些都是用来取代$ pip install用法以及手动虚拟环境管理(要激活虚拟环境,请运行$ pipenv shell)

基本概念

  • 当虚拟环境不存在时,将自动创建一个虚拟环境
  • 当没有参数传递给install,所有套餐[packages]将安装指定的
  • 要初始化Python 3虚拟环境,请运行$ pipenv --three
  • 要初始化Python 2虚拟环境,请运行$ pipenv --two
  • 否则,无论viralenv缺省值是什么,都将是缺省值

其他命令

  • shell将在激活了viralenv的情况下生成一个shell
  • run将运行来自Virtualenv的给定命令,并转发任何参数(例如$ pipenv run python)
  • check断言当前环境满足PEP 508要求
  • graph将打印所有已安装依赖项的漂亮图表

外壳完井

例如,对于鱼,把这个放在你的~/.config/fish/completions/pipenv.fish

eval (pipenv --completion)

或者,使用bash,将此内容放入您的.bashrc.bash_profile

eval "$(pipenv --completion)"

魔术外壳完成现已启用!还有一个fish
plugin
,它将自动为您激活您的子壳!

鱼是最好的贝壳。你应该用它

☤使用率

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where          Output project home information.
  --venv           Output virtualenv information.
  --py             Output Python interpreter information.
  --envs           Output Environment Variable options.
  --rm             Remove the virtualenv.
  --bare           Minimal output.
  --completion     Output completion (to be eval'd).
  --man            Display manpage.
  --three / --two  Use Python 3/2 when creating virtualenv.
  --python TEXT    Specify which version of Python virtualenv should use.
  --site-packages  Enable site-packages for the virtualenv.
  --version        Show the version and exit.
  -h, --help       Show this message and exit.


Usage Examples:
   Create a new project using Python 3.7, specifically:
   $ pipenv --python 3.7

   Remove project virtualenv (inferred from current directory):
   $ pipenv --rm

   Install all dependencies for a project (including dev):
   $ pipenv install --dev

   Create a lockfile containing pre-releases:
   $ pipenv lock --pre

   Show a graph of your installed dependencies:
   $ pipenv graph

   Check your installed dependencies for security vulnerabilities:
   $ pipenv check

   Install a local setup.py into your virtual environment/Pipfile:
   $ pipenv install -e .

   Use a lower-level pip command:
   $ pipenv run pip freeze

Commands:
  check      Checks for security vulnerabilities and against PEP 508 markers
             provided in Pipfile.
  clean      Uninstalls all packages not specified in Pipfile.lock.
  graph      Displays currently–installed dependency graph information.
  install    Installs provided packages and adds them to Pipfile, or (if no
             packages are given), installs all packages from Pipfile.
  lock       Generates Pipfile.lock.
  open       View a given module in your editor.
  run        Spawns a command installed into the virtualenv.
  scripts    Displays the shortcuts in the (optional) [scripts] section of 
             Pipfile. 
  shell      Spawns a shell within the virtualenv.
  sync       Installs all packages specified in Pipfile.lock.
  uninstall  Un-installs a provided package and removes it from Pipfile.

找到项目:

$ 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 this project's virtualenv, run the following:
$ pipenv shell

从GIT安装:

您可以使用按照以下规则格式化的URL从GIT和其他版本控制系统安装带有Pipenv的软件包:

<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>

唯一可选的部分是@<branch_or_tag>部分。在SSH上使用GIT时,您可以使用速记VC和方案别名git+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>请注意,这将被转换为git+ssh://git@<location>在解析时

的有效值<vcs_type>包括gitbzrsvn,以及hg的有效值<scheme>包括http,httpsssh,以及file在特定情况下,您还可以访问其他方案:svn可以与svn作为一个计划,并且bzr可以与sftplp

请注意,它是强烈推荐在可编辑模式下安装任何受版本控制的依赖项,请使用pipenv install -e,以确保每次执行依赖项解析时都可以使用存储库的最新副本执行依赖项解析,并确保它包括所有已知的依赖项

以下是安装位于以下位置的git存储库的用法示例https://github.com/requests/requests.gitFrom标签v2.19.1作为包名称requests

$ pipenv install -e git+https://github.com/requests/requests.git@v2.19#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/requests.git@v2.19.1#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/requests.git@v2.19.1#egg=requests to Pipfile's [packages]...
[...]

您可以阅读更多关于pip’s implementation of vcs support here

安装开发依赖项:

$ 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]

生成锁定文件:

$ 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!

使用外壳:

$ pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ ▯

☤文档

文档位于pipenv.pypa.io

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。