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发布于 2017-11-03 00:31:40
解决方案:升级到库的最新版本.
这一切都从这里开始,突然(在2017年10月),Distutils团队决定撤销对非https请求的支持,而不必担心破坏许多python库早期版本的向后兼容性。有点不专业,但是这是Python世界。
下面是修复,只需转到任何库(nltk==3.2.5等)上的最新版本的库(在我的例子中是nltk==3.2.5)
替代解决方案:叉(或本地复制)回购的版本&将http url修改为 https
尽管如此,如果您在维护另一个项目时要注意这一点,因为您正在升级的依赖项可能与作者所期望的原始库不兼容,例如,在我的上下文中,rsa作为依赖项在另一个库下使用。因此,解决方案是升级父库,以便自动处理此问题。
发布于 2020-05-20 21:09:34
不幸的是,以前的答案对我都没有用。
IMHO --这是非常愚蠢的pip / distutils选择破坏http repos上的包。
我认为一个更好的选择是:
然而,在2020年,许多Python 2包都在http repos上;随着它们的决定,这些包的安装就会中断。
对我来说,工作解决方案是一个非常简单的补丁,由一个python核心模块组成:
--- /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 )。
发布于 2019-02-19 09:40:45
接受的答案在我的例子中不起作用(在老的Raspbian上),但是提供带有命令的下载URL帮助我,正如this文章中所描述的那样:
sudo pip install paho-mqtt -i https://pypi.python.org/simplehttps://stackoverflow.com/questions/47086702
复制相似问题