在python 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

我是一个快乐的人,有他自己的快乐本地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/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。