【问题标题】:Getting error 403 while installing package with pip使用 pip 安装软件包时出现错误 403
【发布时间】:2018-04-08 14:43:17
【问题描述】:

使用 pip 安装谷歌应用引擎时出错

Collecting google_appengine
  Downloading google-appengine-1.5.1.tar.gz (897kB)
    100% |████████████████████████████████| 901kB 1.9MB/s 
    Complete output from command python setup.py egg_info:
    Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.14.tar.gz
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/88/5jq5gz011sl63h_37k_qftv40000gn/T/pip-build-vxx8Ov/google-appengine/setup.py", line 3, in <module>
        ez_setup.use_setuptools()
      File "/Users/user/path to project/project/venv/lib/python2.7/site-packages/ez_setup.py", line 145, in use_setuptools
        return _do_download(version, download_base, to_dir, download_delay)
      File "/Users/user/path to project/project/venv/lib/python2.7/site-packages/ez_setup.py", line 124, in _do_download
        to_dir, download_delay)
      File "/Users/user/path to project/project/venv/lib/python2.7/site-packages/ez_setup.py", line 193, in download_setuptools
        src = urlopen(url)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen
        return opener.open(url, data, timeout)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open
        response = meth(req, response)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response
        'http', request, response, code, msg, hdrs)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 475, in error
        return self._call_chain(*args)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
        result = func(*args)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/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

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/88/5jq5gz011sl63h_37k_qftv40000gn/T/pip-build-vxx8Ov/google-appengine/`

【问题讨论】:

  • 你可以试试--trusted-host参数pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org google-appengine
  • 不,它不工作
  • 您能提供操作系统的详细信息吗?并尝试更新命令
  • 我正在使用 OSX 并尝试了上面的命令得到了这个错误找不到满足 google-appengine 要求的版本(来自版本:)没有为 google-appengine 找到匹配的发行版
  • 看起来像 pip 本身的问题 github.com/pyca/cryptography/issues/2692 如果 pip 有效,请尝试升级 pip pip install --upgrade pip 或者您可以尝试使用 easy_install2.7 google-appengine

标签: python google-app-engine pip


【解决方案1】:

不幸的是,以前的答案都不适合我。

恕我直言,pip / distutils 选择在 http repos 上破坏包是非常愚蠢的。

我认为更好的选择是:

  • pip/distutils 默认使用 https

  • 如果出现错误,比如 403,pip 必须提示你“包 repo 在 http,你要下载吗?”

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 之前应用此补丁)。

【讨论】:

  • 非常感谢!你的这个修复确实比公认的答案更有用(和优雅),特别是因为那个似乎也不再起作用了。
【解决方案2】:

得到错误。 问题出在 pip 尝试安装软件包的仓库中。

【讨论】:

  • 你是如何解决这个问题的?
【解决方案3】:

这是因为 PyPI 禁用了对 API 的非 HTTPS 访问

https://mail.python.org/pipermail/distutils-sig/2017-October/031712.html

作为解决方法,您可以使用

$ pip install xxxx -i https://pypi.python.org/simple/

【讨论】:

  • 现在成千上万的 github python repos 将开始收到来自用户的 403 SSL 问题。为 distutils 团队鼓掌。
  • 如果您知道项目的 URL,您可以直接从那里安装。例如,pip install git+https://github.com/&lt;user&gt;/&lt;project&gt;
  • @MaxShenfield,谢谢,能够将 git 与 pip 一起使用非常有用!
  • 除非我们在 12.04 ubuntu 上升级 libssl,否则这不起作用!
猜你喜欢
  • 2015-01-18
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2018-09-26
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多