本文主要是介绍pipenv简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
Pipenv 是一个类似于Ruby下的Bundler、Node.js下的npm的一个包管理工具,主要是为应用程序的用户和开发人员提供一种设置工作环境的简单办法。它会自动为项目创建并管理一个virtualenv,并在 安装/卸载 包时从 Pipfile中 添加/删除 包。它还会生成非常重要的 Pipenv.lock 文件,用于生成确定性构建。
安装
$ pip install pipenv
Pipenv的功能
- 启用真正的确定性构建,同时轻松地指定所需的内容。
- 为锁定的依赖项生成并检查文件哈希。
- 如果 pyenv可用,则会自动安装需要的Python版本。
- 通过查找 Pipfile 自动递归地找到项目根目录。
- 如果不存在 Pipfile,则会自动生成。
- 在标准位置自动创建virtualenv。
- 在 安装/卸载 包时从 Pipfile中 添加/删除 包。
- 如果存在
.env
文件,则会自动加载。
Pipenv的主要命令有 install,uninstall 和一个会生成 Pipfile.lock 文件的 lock 命令。这些命令主要用于替代 pip install 和 pip 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 freezeCommands:check 根据 Pipfile 中提供的PEP 508标记检查安全漏洞clean 卸载所有 Pipfile.lock 未指定的包graph 显示当前安装的依赖项的关系图信息install 如果未指定要安装的包,则会安装 Pipfile 中的所有包,否则,只安装指定的包lock 生成 Pipfile.lock 文件open 在编辑器中查看给定的模块run 运行virtualenv中已安装的命令shell 在virtualenv内启动一个shellsync 安装 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>#<package_name>
惟一可选的部分是 @<branch_or_tag>
部分。在git中使用SSH协议时,可以使用vcs的缩写和schema的别名git+git@<location>
:
<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
。
注意,这在解析时将被转换为 git+ssh://git@<location>
。
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/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实现对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.
$
这篇关于pipenv简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!