pip requirements.txt与替代索引

Ben*_*end 30 python pip pypi

我想将一个repoze Zope2安装的所有要求放在一个pip 需求文件中.大多数repoze包似乎并没有被PyPI上,但有一个替代的PyPI指数为他们这里.但我无法弄清楚如何告诉pip将该索引与需求文件一起使用.对于单个包装,这很容易

pip install zopelib -i http://dist.repoze.org/zope2/2.10/simple/
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容

pip install -r requirements.txt -i http://dist.repoze.org/zope2/2.10/simple/
Run Code Online (Sandbox Code Playgroud)

或者在我的requirements.txt中所有类型或排列:

zopelib -i http://dist.repoze.org/zope2/2.10/simple/
zopelib --index http://dist.repoze.org/zope2/2.10/simple/
-i http://dist.repoze.org/zope2/2.10/simple/ zopelib
Run Code Online (Sandbox Code Playgroud)

或者(因为文档说"请注意,所有这些选项必须在他们自己的行上.")

--index http://dist.repoze.org/zope2/2.10/simple/
zopelib
Run Code Online (Sandbox Code Playgroud)

那么,告诉pip使用http://dist.repoze.org/zope2/2.10/simple/作为索引的正确方法是什么?

jfs*_*jfs 46

requirements.txt:

-i http://dist.repoze.org/zope2/2.10/simple
zopelib
Run Code Online (Sandbox Code Playgroud)

例:

$ pip install -r requirements.txt
...
Successfully installed zopelib
Run Code Online (Sandbox Code Playgroud)

  • 对于那些好奇的人来说,`-i`是`--index-url`的缩写,如果有人更喜欢明确的话. (6认同)
  • 对于那些由于安全警告而被拒绝连接的人,您可能需要将域添加为受信任的命令:`-i http://some.domain.org/simple --trusted-host some.domain.org` (5认同)
  • 如果我有来自同一个存储库的多个包,我是否必须包含每个包的索引 URL,或者它在文件中的放置位置是否重要? (4认同)

Ani*_*non 22

在包/项目名称之前的需求文件中添加一个额外的索引位置:

--extra-index-url <Extra URLs other than index-url>
<some_project_name>
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用-i--index-url <Base URL of the Python Package Index>

参考:需求文件格式

  • 使用 `--index-url` 而不是 `--extra-index-url` 来防止[依赖混淆攻击](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)。 (15认同)
  • @Rafael-WO IIRC 你不能用一个命令来完成它;您必须使用两个文件:一个包含您的自定义要求,另一个包含其他文件。例如:“pip --index-url … custom-requirements.txt”,然后“pip install -r other-requirements.txt”。 (5认同)
  • @animenon根据要求格式页面(https://web.archive.org/web/20220128085123/https://pip.pypa.io/en/stable/reference/requirements-file-format/#global-options) , --extra-index-url 是一个全局选项,适用于整个文件。您的答案“在包/项目名称之前添加额外的索引位置...”意味着每个包选项。 (4认同)
  • @bfontaine 如何将 `--index-url` 用于我的自定义包,但在 PyPI 上搜索 `requirements.txt` 文件中的其他所有内容? (4认同)
  • 这对我有用。使用“-i”时,“pip install”被限制为只能使用一个源。 (2认同)