首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pip安装失败: SSL必需

Pip安装失败: SSL必需
EN

Stack Overflow用户
提问于 2017-11-03 00:31:40
回答 5查看 22.9K关注 0票数 12
代码语言:javascript
复制
Collecting rsa==3.1.1 (from -r /racetrack/.requirements.txt (line 41))
eval (python -m virtualfish)
  Downloading rsa-3.1.1.tar.gz
    Complete output from command python setup.py egg_info:
    Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.10.tar.gz
    Traceback (most recent call last):          
      File "/usr/lib/python2.7/urllib2.py", line 558, in http_error_default
        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 403: SSL is required
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-11-03 00:31:40

解决方案:升级到库的最新版本.

这一切都从这里开始,突然(在2017年10月),Distutils团队决定撤销对非https请求的支持,而不必担心破坏许多python库早期版本的向后兼容性。有点不专业,但是这是Python世界。

下面是修复,只需转到任何库(nltk==3.2.5等)上的最新版本的库(在我的例子中是nltk==3.2.5)

替代解决方案:叉(或本地复制)回购的版本&将http url修改为 https

尽管如此,如果您在维护另一个项目时要注意这一点,因为您正在升级的依赖项可能与作者所期望的原始库不兼容,例如,在我的上下文中,rsa作为依赖项在另一个库下使用。因此,解决方案是升级父库,以便自动处理此问题。

票数 12
EN

Stack Overflow用户

发布于 2020-05-20 21:09:34

不幸的是,以前的答案对我都没有用。

IMHO --这是非常愚蠢的pip / distutils选择破坏http repos上的包。

我认为一个更好的选择是:

  • pip/distutils默认使用https
  • 如果出现错误,比如403,pip必须建议您“回购包在http上,您想下载吗?”

然而,在2020年,许多Python 2包都在http repos上;随着它们的决定,这些包的安装就会中断。

对我来说,工作解决方案是一个非常简单的补丁,由一个python核心模块组成:

代码语言:javascript
复制
--- /usr/local/lib/python2.7/urllib2.py.original
+++ /usr/local/lib/python2.7/urllib2.py
@@ -427,6 +427,9 @@
             req = meth(req)

         response = self._open(req, data)
+        if protocol == "http" and response.code == 403 :
+            if isinstance(fullurl, basestring) and fullurl.startswith("http://pypi.python.org/packages/source/d/distribute/") :
+                return    self.open(fullurl.replace("http://", "https://"), data = data, timeout = timeout)

         # post-process response
         meth_name = protocol+"_response"

工作:如果失败的url在http上,请在https上重试。

我知道这有点难看,但非常清楚,您也可以快速恢复到原始模块(在应用此修补程序之前,请复制/usr/local/lib/python2.7/urllib2.py )。

票数 8
EN

Stack Overflow用户

发布于 2019-02-19 09:40:45

接受的答案在我的例子中不起作用(在老的Raspbian上),但是提供带有命令的下载URL帮助我,正如this文章中所描述的那样:

代码语言:javascript
复制
sudo pip install paho-mqtt -i https://pypi.python.org/simple
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47086702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档