“devpi constrained:devpi服务器的一个索引,它提供来自其基础的受约束包列表”
devpi-constrained的Python项目详细描述
devpi constrained:为devpi服务器释放筛选器
此插件向devpi-server添加一个受约束的索引。 受约束的索引是只读的,并且从其基础中筛选释放的内容类似于pip中的Constraints Files。
安装
devpi-constrained需要与devpi-server一起安装,才能启用约束的索引。
您可以使用以下命令安装它:
pip install devpi-constrained
不需要配置,因为devpi-server将使用setuptools入口点机制通过调用钩子自动发现插件。
动机
过滤可用于安装的python包通常很有用。 例如:
- 筛选存在已知安全问题的软件包版本
- 提供一套经过测试的“已知良好”包装
- 防止安装带有不兼容许可证的软件包
- 仅允许经过审核的软件包
- 阻止具有中断更改的包版本
使用devpi-constrained可以提供一个包索引,该索引可以启用以上所有功能。
使用量
创建以root/pypi为基的约束索引:
$ devpi index -c prod/devpi type=constrained bases=root/pypi https://example.com/prod/devpi: type=constrained bases=root/pypi volatile=True acl_upload=root acl_toxresult_upload=:ANONYMOUS: constraints= mirror_whitelist= $ devpi use prod/devpi
没有设置任何约束,所有版本都可以从root/pypi获得。
让我们为pip:
添加约束$ devpi index constraints+="pip==6.0" /prod/devpi constraints+=pip==6.0 https://example.com/prod/devpi?no_projects=: type=constrained bases=root/pypi volatile=True acl_upload=root acl_toxresult_upload=:ANONYMOUS: constraints=pip==6.0 mirror_whitelist=
现在,在查找pip:
版本时,只会列出pip 6.0。$ devpi list --all pip http://localhost:3141/root/pypi/+f/610/3897f1bb68d3f/pip-6.0.tar.gz http://localhost:3141/root/pypi/+f/5ec/6732505bd8be4/pip-6.0-py2.py3-none-any.whl
所有其他的包裹仍然不受限制。
为了阻止其他的一切,我们添加了*约束:
$ devpi index constraints+="*" /prod/devpi constraints+=* https://example.com/prod/devpi?no_projects=: type=constrained bases=root/pypi volatile=True acl_upload=root acl_toxresult_upload=:ANONYMOUS: constraints=pip==6.0,* mirror_whitelist=
这是与pip约束的区别,在这里这是不可能的。
$ devpi list --all devpi-server GET https://example.com/prod/devpi/devpi-server/ 404 Not Found: no project 'devpi-server'
可以从文件中批量设置constraints选项。 创建一个文件constraints.txt,每行中包含一个约束:
pip<8,>4 # a comment devpi-server>=4
从文件中设置索引上的constraints选项:
$ devpi index constraints="$(cat constraints.txt)"
更改日志
1.0.0-2019-08-05
- 初次发布。 [弗斯丘尔泽(弗洛里安·舒尔泽)]