在python PIP中,如何在我的私有PIP索引中生成文件;“安全且可验证的”;?
我是一个快乐的人,有他自己的快乐本地pip指数。有一天我更新了pip客户端,我不再高兴了:在python PIP中,如何在我的私有PIP索引中生成文件;“安全且可验证的”;?,python,virtualenv,pip,easy-install,Python,Virtualenv,Pip,Easy Install,我是一个快乐的人,有他自己的快乐本地pip指数。有一天我更新了pip客户端,我不再高兴了: Downloading/unpacking super_package Getting page https://my_server/index/super_package/ URLs to search for versions for super_package: * https://my_server/index/super_package/ * https://pypi.python.org/si
Downloading/unpacking super_package
Getting page https://my_server/index/super_package/
URLs to search for versions for super_package:
* https://my_server/index/super_package/
* https://pypi.python.org/simple/super_package/
Analyzing links from page https://my_server/index/super_package/
Skipping https://my_server/ci/super_package-0.2.2.tar.gz (from https://my_server/index/super_package/) because it is an insecure and unverifiable file.
但是为什么呢?
我在服务器上启用了SSL,我的pip.conf
文件如下所示:
[global]
cert = /path/to/my_server/cert.pem
index-url = https://my_server/index
extra-index-url = https://pypi.python.org/simple/
<html>
<head>
<title>Package Index</title>
<meta name="api-version" value="2" />
</head>
<body><a href="ADMESARfari/index.html">ADMESARfari</a><br/>
<a href="chembl-internal-ws/index.html">chembl-internal-ws</a><br/>
<a href="chembl_api/index.html">chembl_api</a><br/>
...
<a href="gdb/index.html">gdb</a><br/>
</body>
</html>
如何定义“安全且可验证”/“不安全且不可验证”文件?PIP如何区分它们
最后:要我切换到easy\u install吗?
编辑:
我自己的PIP索引如下所示:
[global]
cert = /path/to/my_server/cert.pem
index-url = https://my_server/index
extra-index-url = https://pypi.python.org/simple/
<html>
<head>
<title>Package Index</title>
<meta name="api-version" value="2" />
</head>
<body><a href="ADMESARfari/index.html">ADMESARfari</a><br/>
<a href="chembl-internal-ws/index.html">chembl-internal-ws</a><br/>
<a href="chembl_api/index.html">chembl_api</a><br/>
...
<a href="gdb/index.html">gdb</a><br/>
</body>
</html>
包索引
...
我的mac上安装了PIP服务器的CA证书,但我仍然有同样的问题
简短回答 检查
https://my_server/index
文件
详细答案
如果我知道您的本地索引的真实url(以https://my_server/index
)以及您是如何创建它的
我不知道,所以我希望能对以下更一般的想法有所帮助
首先,您可以使用--allow unsecure
命令行选项。显然,这不是一个好主意,因为你关心你的计算机的安全性
如果你喜欢呆在安全区域,那么你需要找出为什么你的信息源被认为是不安全和无法验证的
查看生成此错误的代码,您可以看到最可能的原因是Link
类的verifiable()
方法的结果
查看此方法,并考虑到由于
index-url = https://my_server/index
在配置文件中,留下的主要原因是变量\u api\u version
的值。要验证索引文件的api\u版本是什么
,请检查meta
标记并查找类似的内容:
<meta name="api-version" value="2" />
如果它不存在,或者它的值小于等于1,那么问题应该在这里
还有一些
hash
验证,但我没有调查它是如何工作的 是否在包链接中指定哈希?如果不是,pip将不信任该链接
查看详细信息/示例。您好,谢谢您的回答。首先,我将尝试将
allow unsecure
添加到我的pip.conf
中,并使用正确的值添加api version
标记,看看这是否有帮助。如果没有,我将编辑我的问题<代码>散列验证将更难…首先尝试更正api版本
-它更安全不幸的是,我不必在周末检查你的答案,但因为这是我唯一的答案,如果它被证明是正确的,我会感到很难过,失去了一个奖励你的机会。所以我这么做了,但这并不意味着答案是正确的。谢谢你的赏金!但是当你有时间的时候请检查一下。我花了一些时间调查你的问题,因此我觉得我的答案应该是正确的。好的,所以我检查了一下,答案是不正确的。我已经有了api版本
meta,其值设置为2。使用--allow unsecure
对我来说不是一个选项,因为我在同一个索引中有许多依赖项丢失的包,所以我必须列出所有这些,这是没有意义的。所以为什么它说“链接可以选择性地包括使用url片段的散列。”。这是否意味着它不是“可以选择”,而是必须的。可能是因为它是可选的,只是pip从1.5开始不再下载它,没有额外的标志;另外,因为warehouse目前正在进行大量开发,所以我不希望文档从最初创建时就完全具备功能或完全更新,并注释旧API。