繁体   English   中英

requirements.txt 中的每行索引 url

[英]Per line index url in requirements.txt

假设我有以下 PyPI:

  • 公共 PyPi(标准包)
  • gitlab pypi(因为 ABC 内部团队想用这个)
  • 人工制品 PyPi(因为承包商团队 DEF 想使用它)

现在假设标题为“ABC”的 package 存在于所有这些文件中,但不是同一事物(例如,“apples”,它们是所有 pypis 上的 3 个完全不同的包。)。 我如何在我的要求和 setup.py 中执行一些操作,将 map 名称更改为 package 以供 pypi 使用?

就像是:

package_def==1.2.3 --index-url=artifactory
apples==1.08 --index-url=gitlab # NOT FROM PUBLIC OR FROM ARTIFACTORY
package_abc==1.2.3 --index-url=artifactory
package_efg==1.0.0 # public pypi

我什至不知道在这种情况下我将如何配置 setup.py。

我真的不希望顶部有多个具有不同索引 url 的 requirements.txt。 我也不想要 --extra-index-url,因为它在使用私有 pypi 时可能会引入漏洞。

我试着用谷歌搜索,弄乱 requirements.txt 的顺序,把它分成不同的文件,等等。没有运气。 似乎最后一个 --index-url 总是用于安装所有包。

有任何想法吗?

问题回到 package 依赖规范通常是 state 需求的想法,它独立于应该如何满足需求。

所以依赖声明“foo==1.0.0”(作为 package 元数据的一部分声明的东西)意味着“我需要名为 foo 的 package,版本为 1.0.0”,这在原则上是独立于实现的。你可以安装那个 package使用来自 PyPI 的 pip,但您也可以使用不同的工具和/或不同的来源来满足该要求(例如 conda、从源安装等)。

这种区别是没有好的方法来做到这一点的原因。

有一些解决方法:

  • 您可以指定要安装的轮子的完整链接 pip
  • 您可以使用像 Poetry 这样的替代工具,它确实更干净地支持这一点。

对于我的特定用例,我只是列出了我想要 pip 安装的 wheel 的完整链接,因为目前升级到 poetry 已经超出了 scope。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM