帮助创建和维护 pip 冻结需求的脚本
项目描述
冻结要求
受此Mozilla 开发团队博客文章的启发,帮助创建和维护冻结的 pip 需求的脚本。
冻结的需求包含您指定的包,以及它们的所有依赖项,以及固定版本。
例如,如果您的requirements.txt包含以下内容:
pyramid sqlalchemy
冻结版本将是:
# This file has been automatically generated, DO NOT EDIT! # Frozen requirements for "requirements.txt" pastedeploy==1.5.2 pyramid==1.5.1 repoze.lru==0.6 setuptools==5.5.1 sqlalchemy==0.9.7 translationstring==1.1 venusian==1.0 webob==1.4 zope.deprecation==4.1.1 zope.interface==4.1.1
然后,您可以通过pip install -r requirements-frozen.txt --no-deps在部署脚本中使用冻结的需求,即使某些包在 pypi 上更新,也可以享受一致的部署。
freeze-requirements 还可以将下载的源包放在您的 Web 服务器上的类似 pypi 的目录结构中,因此您可以使用pip install -r requirements-frozen.txt --index-url http://mywebserver 加快部署。 com/pypi-mirror,并且还构建轮子以进一步加快部署速度。
安装
从 pypi 安装:
$ pip install freeze-requirements
或来自来源:
$ ./setup.py install
例子
创建两个需求文件的冻结版本( 在本例中它们将被命名为requirements-frozen.txt和requirements2-frozen.txt ,可以使用--separate-requirements-suffix 自定义 -frozen 后缀):
$ freeze-requirements freeze --separate-requirements requirements.txt requirements2.txt
将多个需求合并到一个文件中:
$ freeze-requirements freeze --merged-requirements requirements-merged.txt requirements.txt requirements2.txt
使用缓存来避免重新处理已知的需求文件:
$ freeze-requirements freeze --cache-dependencies requirements.txt
下载源包并为它们构建轮子,将它们放在类似 pypi 的目录结构中:
$ freeze-requirements freeze --output-dir /path/to/my/pypi --build-wheels requirements.txt
消息
0.4.4
在 setup.py 中为具有非字符串版本的软件包添加了解决方法(错误是由 unittest2 0.7.1 引起的,请参阅 https://code.google.com/p/unittest-ext/issues/detail?id=84)。
0.4.3
添加了自动冲突解决。
0.4.2
添加了 –no-rebuild-wheels 标志,以避免重建已经存在于 –output-dir 中的轮子。
0.4.1
第一次正确释放