它会自动为您的项目创建和管理一个虚拟环境,并在您的Pipfile
当您安装/卸载软件包时。它还产生了非常重要的Pipfile.lock
,它用于生成确定性构建。
Pipenv寻求解决的问题是多方面的:
- 您不再需要使用
pip
和virtualenv
分开的。他们一起工作 - 管理
requirements.txt
文件can be
problematic,因此Pipenv使用即将到来的Pipfile
和Pipfile.lock
取而代之的是,对于基本用例,哪个更优越 - 散列总是在任何地方使用。保安。自动暴露安全漏洞
- 让您深入了解依赖关系图(例如
$ pipenv graph
) - 通过加载简化开发工作流
.env
文件
您可以在浏览器中快速播放Pipenv:
安装
如果您使用的是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
文件(如果存在)
主要命令有install
,uninstall
,以及lock
,它会生成一个Pipfile.lock
这些都是用来取代$ pip install
用法以及手动虚拟环境管理(要激活虚拟环境,请运行$ pipenv shell
)
基本概念
- 当虚拟环境不存在时,将自动创建一个虚拟环境
- 当没有参数传递给
install
,所有套餐[packages]
将安装指定的 - 要初始化Python 3虚拟环境,请运行
$ pipenv --three
- 要初始化Python 2虚拟环境,请运行
$ pipenv --two
- 否则,无论viralenv缺省值是什么,都将是缺省值
其他命令
shell
将在激活了viralenv的情况下生成一个shellrun
将运行来自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>
包括git
,bzr
,svn
,以及hg
的有效值<scheme>
包括http,
,https
,ssh
,以及file
在特定情况下,您还可以访问其他方案:svn
可以与svn
作为一个计划,并且bzr
可以与sftp
和lp
请注意,它是强烈推荐在可编辑模式下安装任何受版本控制的依赖项,请使用pipenv install -e
,以确保每次执行依赖项解析时都可以使用存储库的最新副本执行依赖项解析,并确保它包括所有已知的依赖项
以下是安装位于以下位置的git存储库的用法示例https://github.com/requests/requests.git
From标签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