use*_*803 25 python pip pypi python-packaging
我搜索了一下但找不到明确的答案。
目标是拥有两个点指数,一个是私有指数,这将是首要任务。其中之一是标准 PyPI。首要任务是防止代码注入的安全风险。
假设我有一个名为 的库lib,并且我配置index_url = http://my_private_pypi_repo并extra_index_url = https://pypi.org/simple
如果 I pip install lib、 和 都lib存在于两个索引中。什么索引会优先?将从哪里安装?
另外,如果pip install lib=0.0.2我的私有索引中存在 0.0.1 版本的 lib。它也会考虑 PyPI 吗?
什么是控制的好方法,某些库仅从私有索引中获取(如果它们存在),并且不会在 PyPI 中查找?
sin*_*roc 23
简短的答案是:没有优先级,您可能应该避免使用--extra-index-url完全避免使用。
这是在这里提出和回答的:https ://github.com/pypa/pip/issues/5045#issuecomment-369521345
\n问题:
\n\n\n我的 pip.conf 中有这个:
\nRun Code Online (Sandbox Code Playgroud)\n[global]\nindex-url = https://myregistry-xyz.com\nextra-index-url = https://pypi.python.org/pypi\n假设两个注册表中都存在 packageX,并且我运行 pip install packageX。
\n我希望 pip 从https://myregistry-xyz.com安装 packageX ,但 pip 将使用https://pypi.python.org/pypi代替。
\n如果我切换 index-url 和 extra-index-url 的值,我会得到相同的结果。pypi 始终优先。
\n
回答:
\n\n\n包的名称和版本应该是唯一的,因此具有相同包名称和版本的两个轮子将被 pip 视为无法区分。这是包元数据的特意功能,不太可能更改。
\n
我还建议阅读此讨论:https://discuss.python.org/t/dependency-notation-include-the-index-url/5659
\n这次讨论涉及很多事情,有些显然超出了这个问题的范围,但无论如何,一切都非常有用。
\n那里应该有您的关键要点:
\n理论上,Pip 并没有真正将一个指数优先于另一个指数。在实践中,由于代码中实现方式的巧合,可能总是先检查一个,但这不是您应该依赖的行为。
\n\n\n什么是控制的好方法,某些库仅从私有索引中获取(如果它们存在),并且不会在 PyPI 中查找?
\n
您应该设置和管理自己的包索引(devpi、pydist、jfrog artifactory、sonatype nexus 等)并专门使用它,这意味着:永远不要使用--extra-index-url. 这是您可以精确控制下载内容的唯一方法。除了几个依赖项之外,这个自定义存储库可能主要充当公共 PyPI 的代理。
有关导致询问索引优先级顺序的某些原因的潜在解决方案,请关注“ PEP 708 \xe2\x80\x93 扩展存储库 API 以减轻依赖混淆攻击”
\n有关的:
\n\n