gpt4 book ai didi

python - 防止私有(private)和基于 pypi 的 Python 包之间的命名空间冲突

转载 作者:行者123 更新时间:2023-12-03 07:30:54 24 4
gpt4 key购买 nike

我们有 100 多个私有(private)包,到目前为止,我们一直在使用 s3pypi 在 s3 存储桶中设置私有(private) pypi。我们的私有(private)包相互依赖(以及公共(public)包),我们的 GitLab 管道找到它所依赖的包的最新功能版本(当然)很重要。 IE。我们对最新 checkin 的代码不感兴趣。我们仅在测试后才创建新轮子,并且 qa 已经违反了对 master 的插入(这是解释 -e <vcs> 要求不起作用的冗长方式)。
我们的设置工作得非常好,直到有人在官方 pypi 上创建了一个新的公共(public)包,它隐藏了我们的一个包名称。我们可以通过增加版本号来强制选择我们的私有(private)包,使其高于 pypi.org 上的新包 - 或者将我们的包重命名为尚未在 pypi.org 上使用的包。
这显然是一个 hacky 和脆弱的解决方案,但显然功能是这样的 by-design .
在初始存储桶设置后,s3pypi 不需要维护或管理。以上票证建议使用devpi但这似乎是一个非常繁重的解决方案,需要管理/监控/等。
GitLab 的 pypi 解决方案似乎处于单个包级别(这意味着我们必须列出多达 100 多个 url - 每个包一个)。这似乎不切实际,但也许我不明白一些东西(我也可以看到我们组下的包注册表菜单,但文档指向“package-pypi”文档)。
我们不能成为第一个面临这个问题的小公司..?有没有比在 pypi.org 上注册我们所有包的虚拟版本更好的方法(版本=0.0.1,所以首选 s3pypi 版本)?

最佳答案

这可能不是你的解决方案,但我告诉我们我们做什么。

  • 为包名添加前缀,并使用命名空间(例如 company.product.tool )。
  • 当我们安装我们的包(包括它们的内部依赖项)时,我们使用 requirements.txt包含我们的 PyPI URL 的文件。我们在容器中运行所有内容,并在构建镜像时在其中安装所有公共(public)依赖项。
  • 关于python - 防止私有(private)和基于 pypi 的 Python 包之间的命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63320653/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com