1
|
sudo
-
H
pip
install
-
U
pipenv
|
pipenv 常用命令:
示例:
创建一个环境:
安装第三方模块
pipenv
可以自动安装你项目的第三方模块 :
pipenv install
安装列表是通过读取pipfile
, pipfile.lock
文件实现的, 如果没有这两个文件就根据requirements.txt
生成pipfile
和pipfile.lock
并读取.
如果想单独安装某个模块还可以指定模块名安装:
pipenv install six
单独安装模块后会自动将新模块信息添加到pipfile
中, 要同时更新pipfile.lock
需要运行:
pipenv shell
更多高级用法可以参考官方文档.细节问题
- 虚拟环境里也可以通过
pip
安装第三方模块, 但这样不会自动更新pipfile
文件. - 和
virtualenv
相同, 无法用pip
安装的第三方模块要在虚拟环境里使用比较麻烦. pipenv
新建的虚拟环境放在统一的目录下, 在某个目录下运行pipenv shell
时pipenv
会自动在虚拟环境目录下搜索以当前目录名称开头的虚拟环境目录, 如果没找到则判断为无虚拟环境.
移除环境:
Pipfile
与 Pipfile.lock
Pipfile
与 Pipfile.lock
是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt
文件。
基本理念
Pipfile
文件是 TOML 格式而不是requirements.txt
这样的纯文本。- 一个项目对应一个
Pipfile
,支持开发环境与正式环境区分。默认提供default
和development
区分。 - 提供版本锁支持,存为
Pipfile.lock
。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[
[
source
]
]
url
=
'https://pypi.python.org/simple'
verify_ssl
=
true
[
requires
]
python_version
=
'2.7'
[
packages
]
requests
=
{
extras
=
[
'socks'
]
}
Django
=
'>1.10'
pinax
=
{
git
=
'git://github.com/pinax/pinax.git'
,
ref
=
'1.4'
,
editable
=
true
}
[
dev
-
packages
]
nose
=
'*'
|
PEP 508 支持
可以设置支持的运行环境:
1
2
3
4
|
[
requires
]
python_full_version
=
'3.6.0b1'
platform
=
'windows'
|
pip 支持
pip 提供了 -p
/--pipfile
参数用于安装 Pipfile
,类似 -r
/--requirement
会默认寻找 requirements.txt
文件,如果没有指定 -p
的参数将会自动寻找 Pipfile
文件。
例如:
1
2
|
pip
install
-
p
# 没有参数会自动寻找 Pipfile 文件
pip
install
-
p
Pipfile
.
lock
# 根据 Pipfile.lock 安装指定依赖
|
需要注意的是,pip install -p
安装时会自动生成或更新 Pipfile.lock
文件。
Pipfile.lock
Pipfile.lock
是根据 Pipfile
和当前环境自动生成的 JSON 格式的依赖文件,任何情况下都不要手动修改该文件!
生成命令:pip freeze -p Pipfile
。
或者:pip freeze -p different_pipfile
,将会生成 different_pipfile.lock
。
pipenv
pipenv 是 Pipfile
主要倡导者、requests 作者 Kenneth Reitz 的一个库,有机的结合了 Pipfile 、pip 和 virtualenv。
主要特性
- 根据
Pipfile
自动寻找项目根目录。 - 如果不存在,可以自动生成
Pipfile
和Pipfile.lock
。 - 自动在项目目录的
.venv
目录创建虚拟环境。(暂时需要设置export PIPENV_VENV_IN_PROJECT=1
) - 自动管理
Pipfile
新安装和删除的包。 - 自动更新 pip。
基本命令
pipenv --where
:寻找项目根目录。pipenv install
:安装Pipfile
中所列的所有包。pipenv install --dev
:安装Pipfile
中 dev 环境所列的所有包。pipenv uninstall
:卸载所有包。pipenv install pytest --dev
:在dev
环境中安装 pytest 包。pipenv lock
:确认Pipfile
中所有包已安装,并根据安装版本生成Pipfile.lock
。pipenv shell
:应用虚拟环境。
自动补全
由于 pipenv 的命令行程序是基于 Click 库,因此自带了 Bash 补全功能,只需要运行或者将这行代码加入 Bash 启动脚本:eval "$(_FOO_BAR_COMPLETE=source foo-bar)"
。
对于 Zsh,需要将这行代码改为 eval "$(_PIPENV_COMPLETE=source-zsh pipenv)"
。
最后,Pipfile
和 pipenv
仍然是实验性特性,可能存在不稳定性和较大变动,注意关注最新变化!。