Pipenv 工具集pip
, Pipfile
, virtualenv
于一身,是一个非常方便易用的python包
管理工具。
我们知道用Python开发项目或测试项目,Python虚拟环境及包管理很重要。作为Python程序 员如果现在还在直接在系统Python的环境下工作就有些不称职了。
之前Python的包管理没有象npm, yarn这样的优秀包管理工具,现在pipenv终于为大家填上 了这个缺口。
pipenv由著名python包requests
的作者开发。它为您的项目创建和管理Python虚拟环境,并通过Pipfile
和 Pipfile.lock
这
两个文件来管理项目中的Python依赖包。
安装
pipenv本身是一个python程序包,安装很简单
$ pip install pipenv
使用
$ cd project1
$ pipenv install --three requests
进入project1
项目目录,运行上述命令,在第一次运行pipenv install
命令时会为该项目创建了对应的
Python虚拟环境。--three
参数指定使用python 3.X作为运行环境的python版本。同时该
命令在project1
目录下创建Pipfile
和Pipfile.lock
两个文件。Pipfile 用于管理项
目的Python包依赖。作为一个例子:requests
表示您为该项目安装requests
Python 包。
Pipfile
Pipfile
和Pipfile.lock
的发明就是用来取代过于简陋的requirements.txt
的。
- Pipfile是TOML格式的,可以提供更丰富的依赖 包管理信息
requirements.txt往往需要为不同的运行环境创建多个文件,比如:
test-requirements.txt
,dev-requirements.txt
等,而Pipfile可以只用一个文件搞定 。目前Pipfile支持两个默认分组的运行环境管理:default和developement,未来可能加入更多的分组。pipenv用
Pipfile.lock
提供了对所有依赖层级的Python包的版本锁功能
Pipfile例子:
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
[dev-packages]
pytest = "*"
Pipfile.lock例子:
{
"_meta": {
"hash": {
"sha256": "8d14434df45e0ef884d6c3f6e8048ba72335637a8631cc44792f52fd20b6f97a"
},
"host-environment-markers": {
"implementation_name": "cpython",
"implementation_version": "3.6.1",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "16.7.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64",
"python_full_version": "3.6.1",
"python_version": "3.6",
"sys_platform": "darwin"
},
"pipfile-spec": 5,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"certifi": {
"hashes": [
"sha256:54a07c09c586b0e4c619f02a5e94e36619da8e2b053e20f594348c0611803704",
"sha256:40523d2efb60523e113b44602298f0960e900388cf3bb6043f645cf57ea9e3f5"
],
"version": "==2017.7.27.1"
},
"chardet": {
"hashes": [
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
],
"version": "==3.0.4"
},
"idna": {
"hashes": [
"sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4",
"sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
],
"version": "==2.6"
},
"requests": {
"hashes": [
"sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
"sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
],
"version": "==2.18.4"
},
"urllib3": {
"hashes": [
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
"sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
],
"version": "==1.22"
}
},
"develop": {
"py": {
"hashes": [
"sha256:2ccb79b01769d99115aa600d7eed99f524bf752bba8f041dc1c184853514655a",
"sha256:0f2d585d22050e90c7d293b6451c83db097df77871974d90efd5a30dc12fcde3"
],
"version": "==1.4.34"
},
"pytest": {
"hashes": [
"sha256:b84f554f8ddc23add65c411bf112b2d88e2489fd45f753b1cae5936358bdf314",
"sha256:f46e49e0340a532764991c498244a60e3a37d7424a532b3ff1a6a7653f1a403a"
],
"version": "==3.2.2"
}
}
}
pipenv常用命令
$ pipenv install [package name]
如果不指定安装具体的python包,则安装Pipfile中所列的python依赖包,否则安装指定
python包并更新Pipfile。可在第一次执行该命令时,使用--three
, --two
, 或
--python [version or python path]
来指定所创建的python运行环境的python版本。
$ pipenv uninstall [package name]
从虚拟环境中卸载指定的python包并更新Pipfile。如果使用了--all
则在虚拟环境中卸载
所有已安装的Python包,但不更新Pipfile。
$ pipenv lock
生成Pipfile.lock
锁定所有的依赖包及其子依赖的版本。
$ pipenv run <python module>
使用虚拟环境中的python运行指定python模块
$ pipenv shell
激活python虚拟环境,之后运行python模块都在该虚拟环境中,需要退出该环境运行
deactivate
命令。