requirements.txt 时代
1. 快且简单的方式
$ cat requirements.txt
Flask
写明要安装的包,通过pip install -r requirements.txt
命令将flask及其依赖包全部安装。
这种方式存在一个比较大的风险,若flask包版本有所变动,将导致不同时间install都会有不同的结果。
2. 比较好的方式
$ cat requirements.txt
Flask==0.10.1
Werkzeug==0.11.9
Jinja2==2.8
写明要安装的包及其依赖包并指明版本号,通过这种方式统一版本。
但此时我们想想,好麻烦啊,每次都要去找这么多包的最新版本号。
3. 比较优雅的方式
让我们利用两个文件去管理
- requirements-to-freeze.txt
- requirements.txt
- 写明要安装的包
$ cat requirements-to-freeze.txt
Flask
- 通过
pip install requirements-to-freeze.txt
安装包及其依赖包 - 手动锁定版本,利用
pip freeze > requirements.txt
记录当前环境所有依赖包及其版本
$ cat requirements.txt
Flask==0.10.1
Werkzeug==0.11.9
Jinja2==2.8
划时代的Pipenv
Pipenv默认使用两个文件对依赖包进行管理:Pipfile
、Pipfile.lock
Pipenv已集成了pip及virtualenv这两个工具,此时我们要安装flask,直接运行pipenv install flask
,此时已自动在沙箱环境中安装好了flask,并在Pipfile.lock
中记录当前环境所有依赖包及其版本。
$ cat Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[dev-packages]
[packages]
flask = "*"
[requires]
python_version = "3.5"
$ cat Pipfile.lock
{
"_meta": {
"hash": {
"sha256": "ace08b0ebaac88893742f5cd0b0488823594b6de62fefdeb29506073fac3d3b3"
},
"pipfile-spec": 6,
"requires": {
"python_version": "2.7"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"flask": {
"hashes": [
"sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48",
"sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05"
],
"index": "pypi",
"version": "==1.0.2"
},
"jinja2": {
"hashes": [
"sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
"sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"
],
"version": "==2.10"
},
"werkzeug": {
"hashes": [
"sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c",
"sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b"
],
"version": "==0.14.1"
}
},
"develop": {}
}
很明显,使用Pipenv能节省我们的时间并能帮助我们更合理地管理依赖包。
未完待续.....