我搜索了一下,但找不到明确的答案。
目标是,有两个pip索引,一个是私有索引,这将是第一优先级。一个是标准的PyPI。首要任务是防止代码注入的安全风险
假设我有一个名为lib
的库,我配置了index_url = http://my_private_pypi_repo
和extra_index_url = https://pypi.org/simple
如果两个索引中都存在Ipip install lib
和lib
。什么索引将获得优先级?从何处安装
另外,如果Ipip install lib=0.0.2
但是lib存在于版本0.0.1的私有索引中。它也会关注PyPI吗
控制的好方法是什么,某些库只有在私有索引存在的情况下才能从私有索引中获取,而不会在PyPI中查找
这个问题的标题感觉有点像XY problem的例子。如果你能详细说明你想要实现的目标以及你的限制条件,我们可能会给你一个更好的答案
也就是说,中华民国关于管理自己的包装索引并只使用它的建议是一个很好的建议。我还想到了其他一些想法:
更新:结果是pip may run distributions other than those in the constraints file,因此这种方法可能被认为是不安全的。此外hashes are kind of broken关于pip的最新版本
使用带有散列的约束文件。假设您已在名为
requirements.in
的文件中记录了依赖项,则可以使用类似pip-tools
的pip-compile generate-hashes
生成此文件。然后您可以安装像pip install -c requirements.txt some_package
这样的软件包使用另一种打包工具,如pipenv。它的工作原理与前面的建议类似
在当地管理包裹。包和依赖项可以像
pip download dest some_dir some_package
一样下载,也可以像pip install no-index find-links some_dir
一样安装使用密封的构建系统。我知道bazel将此作为一项功能进行宣传,但对裤子和巴克等其他功能不太确定
1:https://en.wikipedia.org/wiki/XY_proble
简单的回答是:没有优先级,您可能应该避免完全使用
extra-index-url
这里有这样的问题和答案:https://github.com/pypa/pip/issues/5045#issuecomment-369521345
问题:
回答:
我还建议阅读以下讨论:https://discuss.python.org/t/dependency-notation-including-the-index-url/5659
本次讨论涉及的内容很多,其中一些内容显然超出了本问题的范围,但无论如何,所有内容都非常有用
在那里,应该有你的钥匙外卖:
理论上,Pip并没有将一个指数置于另一个指数之上。实际上,由于代码实现方式的巧合,可能总是先检查一个,但这不是您应该依赖的行为
您应该设置和管理自己的包索引(devpi、pydist、jfrog artifactory、sonatype nexus等),并专门使用它,这意味着:永远不要使用
extra-index-url
。这是您可以精确控制下载内容的唯一方法。除了几个依赖项之外,这个自定义存储库可能主要充当公共PyPI的代理相关的
相关问题 更多 >
编程相关推荐