在RHEL7上使用pip安装boto3时发生错误-隧道连接失败:502错误的网关

时间:2019-07-19 18:16:14

标签: python-3.x amazon-web-services proxy pip boto3

我正在尝试在运行RHEL7.6的ec2实例上安装boto3。我在代理后面,代理信息在/ etc / environment中列出。我确定代理正在工作。我可以卷曲https://pypi.org并定期使用我们的代理。我正在运行Python 2.7.5和Pip 8.1.2。

我运行以下命令来生成502 Bad Gateway:
pip install --proxy http://<redacted-ip>:<redacted-port> -v --log pipinstall1.log boto3

我包括了--proxy标志,因为没有它我遇到了相同的错误。我想确保pip使用了代理,但无济于事。


对于直接粘贴日志,我深表歉意,但无法使用托管服务来附加日志文件。

  Collecting boto3
  1 location(s) to search for versions of boto3:
  * https://pypi.python.org/simple/boto3/
  Getting page https://pypi.python.org/simple/boto3/
  Looking up "https://pypi.python.org/simple/boto3/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/boto3/" in the cache
  No cache entry available
  Starting new HTTPS connection (1): pypi.org
  Incremented Retry for (url='/simple/boto3/'): Retry(total=4, connect=None, read=None, redirect=None)
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Starting new HTTPS connection (2): pypi.org
  Incremented Retry for (url='/simple/boto3/'): Retry(total=3, connect=None, read=None, redirect=None)
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Starting new HTTPS connection (3): pypi.org
  Incremented Retry for (url='/simple/boto3/'): Retry(total=2, connect=None, read=None, redirect=None)
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Starting new HTTPS connection (4): pypi.org
  Incremented Retry for (url='/simple/boto3/'): Retry(total=1, connect=None, read=None, redirect=None)
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Starting new HTTPS connection (5): pypi.org
  Incremented Retry for (url='/simple/boto3/'): Retry(total=0, connect=None, read=None, redirect=None)
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Starting new HTTPS connection (6): pypi.org
  Could not fetch URL https://pypi.python.org/simple/boto3/: connection error: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/boto3/ (Caused by ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',))) - skipping
  Could not find a version that satisfies the requirement boto3 (from versions: )
Cleaning up...
No matching distribution found for boto3
Exception information:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 307, in run
    requirement_set.prepare_files(finder)
  File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 370, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 522, in _prepare_file
    finder, self.upgrade, require_hashes)
  File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 268, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python2.7/site-packages/pip/index.py", line 491, in find_requirement
    'No matching distribution found for %s' % req
DistributionNotFound: No matching distribution found for boto3
Looking up "https://pypi.python.org/pypi/pip/json" in the cache
Returning cached "301 Moved Permanently" response (ignoring date and etag information)
Looking up "https://pypi.org/pypi/pip/json" in the cache
No cache entry available
Starting new HTTPS connection (1): pypi.org
There was an error checking the latest version of pip
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip/utils/outdated.py", line 126, in pip_version_check
    headers={"Accept": "application/json"},
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 487, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/pip/download.py", line 378, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 606, in send
    history = [resp for resp in gen] if allow_redirects else []
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 179, in resolve_redirects
    **adapter_kwargs
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py", line 46, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/lib/python2.7/site-packages/pip/_vendor/requests/adapters.py", line 465, in send
    raise ProxyError(e, request=request)
ProxyError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/pip/json (Caused by ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 502 Bad Gateway',)))

更新

为了消除Python 2.7.5太旧而无法从PyPi下载的可能性,我架起了一个新的运行RHEL 8的ec2实例。该实例运行的是Python 3.6.8和pip 9.0.3。我验证了代理服务器是否可以通过curl https://pypi.org/simple/boto3/正常工作,并成功返回。

运行时我仍然收到502 Bad Gateway:
pip3 --log pip3_log.txt --proxy http://<redacted-ip>:<redacted-port> --trusted-host pypi.org install boto3

pip3_log.txt的输出如下:

Collecting boto3
  1 location(s) to search for versions of boto3:
  * https://pypi.python.org/simple/boto3/
  Getting page https://pypi.python.org/simple/boto3/
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))': /simple/boto3/
  Could not fetch URL https://pypi.python.org/simple/boto3/: connection error: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/boto3/ (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',))) - skipping
  Could not find a version that satisfies the requirement boto3 (from versions: )
Cleaning up...
No matching distribution found for boto3
Exception information:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 346, in run
    requirement_set.prepare_files(finder)
  File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 381, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 557, in _prepare_file
    require_hashes
  File "/usr/lib/python3.6/site-packages/pip/req/req_install.py", line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python3.6/site-packages/pip/index.py", line 514, in find_requirement
    'No matching distribution found for %s' % req
pip.exceptions.DistributionNotFound: No matching distribution found for boto3
There was an error checking the latest version of pip
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py", line 595, in urlopen
    self._prepare_proxy(conn)
  File "/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py", line 816, in _prepare_proxy
    conn.connect()
  File "/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/connection.py", line 294, in connect
    self._tunnel()
  File "/usr/lib64/python3.6/http/client.py", line 919, in _tunnel
    message.strip()))
OSError: Tunnel connection failed: 502 Bad Gateway

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/util/retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
pip._vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/pip/json (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/utils/outdated.py", line 141, in pip_version_check
    headers={"Accept": "application/json"},
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 521, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3.6/site-packages/pip/download.py", line 386, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 640, in send
    history = [resp for resp in gen] if allow_redirects else []
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 640, in <listcomp>
    history = [resp for resp in gen] if allow_redirects else []
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 218, in resolve_redirects
    **adapter_kwargs
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py", line 502, in send
    raise ProxyError(e, request=request)
pip._vendor.requests.exceptions.ProxyError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/pip/json (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway',)))

1 个答案:

答案 0 :(得分:0)

几天前,我遇到了相同的问题,因为我还使用了仅将两个域列入白名单的代理:pypi.orgfiles.pythonhosted.org 问题是pip正在较旧的版本上运行。在我的情况下,pip在版本9.0.1上运行。此版本的pip尝试在旧网址pypi.python.org上查找软件包,该网址实际上已重定向到pypi.org

1 location(s) to search for versions of pip:
* https://pypi.python.org/simple/pip/
Getting page https://pypi.python.org/simple/pip/
Looking up "https://pypi.python.org/simple/pip/" in the cache
No cache entry available
Starting new HTTPS connection (1): pypi.python.org
Incremented Retry for (url='/simple/pip/'): Retry(total=4, connect=None, read=None, redirect=None, status=None)
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden',))': /simple/pip/

您可以通过传输whl文件来离线升级点子。您可以从这里https://files.pythonhosted.org/packages/5a/4a/39400ff9b36e719bdf8f31c99fe1fa7842a42fa77432e584f707a5080063/pip-20.2.2-py2.py3-none-any.whl

下载它

通过运行以下命令来升级点子:

$ python3 -m pip install pip-20.2.2-py2.py3-none-any.whl

通过运行以下命令来验证点子是否已升级:

$ python3 -m pip show pip
Name: pip
Version: 20.2.2
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: distutils-sig@python.org
License: MIT
Location: /home/ubuntu/.local/lib/python3.6/site-packages
Requires: 
Required-by:

更新的点直接在pypi.org中查找软件包,并从files.pythonhosted.org下载所需的所有文件。 pip升级后,我便能够安装pip软件包。

重要说明:

请确保您已将pypi.orgfiles.pythonhosted.org列入白名单。如果无法访问这些域,则pip将无法使用Internet安装任何软件包。