【发布时间】:2019-11-28 18:16:34
【问题描述】:
我正在尝试在运行 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',)))
【问题讨论】:
-
无需道歉,在问题中粘贴日志是正确的做法。 Python 2.7.5 可能太旧了,无法从 PyPI 下载任何东西,因为它是针对不支持 TLSv1.2 的旧版本 OpenSSL 编译的;用例如检查
python2.7 -c "import ssl; print(ssl.OPENSSL_VERSION); print(getattr(ssl, 'PROTOCOL_TLSv1_2', 'No TLSv1.2 support'))"。您需要将 Python 2 至少升级到 Python 2.7.9 才能从 PyPI 安装。 -
感谢您的回复,我已尝试使用更新版本的 python 和 pip 从运行 RHEL8 的新实例安装 boto3。我的结果与上面更新部分中显示的结果相同。
-
您是否发现 RHEL8 的这个问题,我被卡住了,无法通过 pip install wget 安装任何软件包工作正常。 pip install 给出认证错误
-
今天我在 ubuntu18 上设置了 tinyproxy 以使用 RHEL 8 和与您提到的相同版本的 python 和 pip3 进行测试,并且它有效。我可以说,它可能与代理设置有关。你能告诉我
curl -v -I google.com的输出吗?您可以在输出中隐藏代理服务器 IP。
标签: python-3.x amazon-web-services proxy pip boto3