Python的3.7和数据流 - SSL证书问题

问题描述 投票:1回答:1

我需要使用谷歌的云API来编写我的数据流工作。

据我了解,我不能用pip install google-cloud-dataflow因为Apache梁惯于”在Python 3中工作,所以我一直在使用googleapiclient.discovery。然而,当我发出build()命令,它弹了援引错误:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)

背景说明:

  • 我坐在后面的公司代理,与设置在环境级别的HTTP(S)_proxy
  • 我也有CA_BUNDLE和REQUESTS_CA_BUNDLE设置为我的自定义证书
  • 我已经安装了certifi,但没有爱
  • 我已经尝试运行/Applications/Python\ 3.6/Install\ Certificates.command却找不到我的virtualenv的.command。此外,宁愿不走这条路,因为它会令我督促部署的噩梦

这里是我的代码:

from oauth2client.client import GoogleCredentials
from googleapiclient.discovery import build

credentials = GoogleCredentials.get_application_default()

dataflow = build('dataflow', 'v1b3', credentials=credentials)

结果:

回溯(最后最近一次调用):文件 “test_dataflow_creds.py”,第6行,在数据流=版本( '数据流', 'v1b3',凭据=凭证)文件“/Users/user/.pyenv/versions/unit-test -3.7 / lib目录/ python3.7 /站点包/ googleapiclient / _helpers.py “线路130,在positional_wrapper回报包裹(* ARGS,** kwargs)文件” /Users/user/.pyenv/versions/unit-test -3.7 / lib目录/ python3.7 /站点包/ googleapiclient / discovery.py “生产线222,在建REQUESTED_URL,discovery_http,cache_discovery,高速缓存)文件” /Users/user/.pyenv/versions/unit-test-3.7 /lib/python3.7/site-packages/googleapiclient/discovery.py “线路269,在_retrieve_discovery_doc RESP,含量= http.request(actual_url)文件” /Users/user/.pyenv/versions/unit-test-3.7 /lib/python3.7/site-packages/httplib2/init.py “1924年线,在请求cachekey,文件” /Users/user/.pyenv/versions/unit-test-3.7/lib/python3.7/site -packages / httplib2的/ init.py “线1595,在_request康涅狄格州,REQUEST_URI,方法,主体,标头文件” /Users/user/.pyenv/versions/unit-测试-3.7 / lib目录/ python3.7 /站点包/ httplib2的/ init.py “线路1501,在_conn_request conn.connect()文件” /Users/user/.pyenv/versions/unit-test-3.7/lib /python3.7/site-packages/httplib2/init.py “线1291,在连接self.sock = self._context.wrap_socket(袜子,server_hostname = self.host)文件” /Users/user/.pyenv/versions /3.7.0/lib/python3.7/ssl.py”,线412,在wrap_socket会话=会话文件 “/Users/user/.pyenv/versions/3.7.0/lib/python3.7/ssl.py” (线850,在_create self.do_handshake)文件 “/Users/user/.pyenv/versions/3.7.0/lib/python3.7/ssl.py”,线1108,在do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError:SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地颁发者证书(_ssl.c:1045)

python-3.x google-cloud-dataflow
1个回答
1
投票

TL;博士:得到它的工作通过导出所有证书到一个共同文件,然后附加到路径的证书文件由CERTIFI规定

脚步:

  1. 在Firefox>首选项>查看证书>您的证书,导出所有需要的人。
  2. 串连所有上述.CRT文件到一个大包。
  3. 在bash,运行python -m requests.certs拿到证书文件蟒蛇正在使用。
  4. 来自步骤3的上述追加到该文件从第2步捆绑证书。
  5. 完成
© www.soinside.com 2019 - 2024. All rights reserved.