在更新 virtualenv 的过程中,我似乎在 ssl 库或其他东西中弄出了问题。以前在两个 virtualenv 中的任何一个中工作的代码现在只能在一个中工作;在我更改的代码中,下面显示的代码会生成后续错误。
我没有看到看起来相关或与我在许多类似问题案例中发现的 virtualenvs 之间存在任何明显差异。任何人都可以提出任何其他调查路线,或者有什么明显的跳出吗?
在这两个环境中,我们都有
$ python --version
Python 2.7.6
这是 SSL 错误的高级调用requests.get()
和要点。再往下,我pip freeze
在两个环境中包含一个差异。
response = requests.get(
query,
auth=(self.user, self.token),
verify=True,
cert=self._requests_ca_bundle
)
产生错误:
File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/nimbus/gitter.py", line 338, in call_api
cert=self._requests_ca_bundle
File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
...
File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 421, in load_cert_chain
self._ctx.use_privatekey_file(keyfile or certfile)
File "/home/security/.virtualenvs/nimbus/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 798, in use_privatekey_file
self._raise_passphrase_exception()
...
OpenSSL.SSL.Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_PrivateKey_file', 'PEM lib’)]
requests.get()
这是每个环境中通过参数发送到的证书(来自证书)cert=self._requests_ca_bundle
;差异是空的。
$ wc /tmp/*.cacert*
5246 10849 321421 /tmp/b.cacert.pem
5245 10849 321421 /tmp/s.cacert.pem
pip freeze
这是两个 virtualenvs中输出的差异。
This virtualenv works. This virtualenv doesn't.
appdirs==1.4.3 <
asn1crypto==0.22.0 asn1crypto==0.22.0
> awscli==1.11.66
> botocore==1.5.29
certifi==2017.4.17 certifi==2017.4.17
cffi==1.10.0 cffi==1.10.0
chardet==3.0.4 chardet==3.0.4
> colorama==0.3.7
cryptography==1.8.1 cryptography==1.8.1
cssselect==1.0.1 cssselect==1.0.1
cssutils==1.0.2 cssutils==1.0.2
> docutils==0.13.1
enum34==1.1.6 enum34==1.1.6
> futures==3.0.5
idna==2.5 idna==2.5
ipaddress==1.0.18 ipaddress==1.0.18
> jmespath==0.9.2
lxml==3.8.0 lxml==3.8.0
Mako==1.0.6 Mako==1.0.6
MarkupSafe==1.0 MarkupSafe==1.0
ndg-httpsclient==0.4.2 ndg-httpsclient==0.4.2
nimbus==1.1.7 nimbus==1.1.7
packaging==16.8 packaging==16.8
premailer==3.0.1 premailer==3.0.1
pyasn1==0.2.3 pyasn1==0.2.3
pycparser==2.17 pycparser==2.17
pyOpenSSL==17.0.0 pyOpenSSL==17.0.0
pyparsing==2.2.0 pyparsing==2.2.0
> python-dateutil==2.6.0
> PyYAML==3.12
requests==2.17.3 requests==2.17.3
> rsa==3.4.2
> s3transfer==0.1.10
sh==1.12.14 sh==1.12.14
six==1.10.0 six==1.10.0
urllib3==1.21.1 urllib3==1.21.1