需求:
\n\n环境:
\n\n询问:
\n\nDef 欣赏基于类似现实世界经验的解决方案。
\n\n假设:
\n\n澄清:
\n\n如今,如果您想托管自己的 PyPI 存储库,有很多可行的选择。有许多可用的软件包可以实现 PyPI 存储库服务器,最值得注意的是:
\n\n\n\n还有一些其他或多或少奇特的软件包,例如PyPICloud,可将软件包文件直接上传到 Amazon S3 实例。JFrog 的Artifactory还支持提供 python 包,尽管不是免费版本,所以只有当您已经支付许可证费用时才有意义。您甚至可以只使用 python 的 stdlib 创建本地 PyPI 存储库,请参阅我对 SO 的回答。
\n\n此外,这个主题在 SO 上讨论了多次,最常见的问题是如何推出我自己的 pypi?以及如何在没有镜像的情况下创建本地自己的 pypi 存储库索引?请注意,第一个问题相当古老,并且包含大部分过时的答案,第二个问题则更为最新。
\n\ndevpi在我的工作中,我们两年前评估了可用的解决方案,并一直坚持使用devpi。由流行测试框架pytest和 CI 任务自动化工具背后的同一个人开发tox,devpi是一个多功能工具,它:
pluggy库;与用于扩展的 API 相同tox,或者pytest如果您熟悉它们);您可以通过编写自己的插件来定制很多东西,从身份验证到存储后端。Github 页面上还有几个可用的内部插件。IMO 最强大的功能是索引。索引定义了一组可以从索引 URL 安装的包。例如,假设一个devpi实例配置了两个索引:index fooOffers packageA和 Index barOffers B。现在您有两个存储库 URL:
$ pip install A --index-url=https://my.pypi.org/foo\nRun Code Online (Sandbox Code Playgroud)\n\n会成功,但是
\n\n$ pip install A --index-url=https://my.PyPI.org/bar\nRun Code Online (Sandbox Code Playgroud)\n\n将失败。索引可以在扩展自己的包基础的意义上相互继承,因此如果bar继承foo,您将能够从索引安装A两者。Bbar
这使我们能够轻松配置包限制策略:比如说,我们有两个主要的用户组(开发人员和 QA),每个组都有自己所需的一组包,我们还开发提供给客户的包和供内部使用的工具。将它们与索引分组没有问题:
\n\nroot/pypi\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 company/base <- contains common packages like pip or setuptools\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 company/internal <- in-house tools\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 company/dev <- packages necessary for development\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 developer/sandbox <- private index for single developer\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 developer2/sandbox\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 company/qa <- packages for QA (test automation etc)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 customer/release <- customer packages\nRun Code Online (Sandbox Code Playgroud)\n\n现在,例如,开发人员设置索引 URLhttps://my.pypi.org/developer/sandbox一次,就可以访问上传到 例如 的所有新包company/base,而客户设置索引 URL 时https://my.pypi.org/customer/release,无法访问来自 的任何包company/internal。
这root/pypi是一个特殊的元索引:它始终存在;如果索引继承它,则所有未包含在索引中的安装包的请求都会被代理到 pypi.org。要关闭 pypi.org 镜像,只需不要继承自root/pypi.
上传限制策略也很容易在每个索引的基础上设置:所有开发人员都可以上传到自己的私有沙箱company/dev;所有 QA 都可以上传至company/qa; 只有管理员可以上传到company/base,上传到company/internal并且客户索引是在成功的夜间构建上从 CI 服务器创建的。
整个设置和配置过程请参阅devpi 文档;这些文档非常广泛,涵盖了将出现的大多数问题。
\n| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |