python openssl google-drive-sdk cx-freeze

python - Google API y cx_Freeze no funcionan correctamente



openssl google-drive-sdk (1)

Parece que no puede encontrar sus certificados SSL. Esto es comprensible porque httplib2 los carga desde el sistema de archivos, y nada le dice a cx_Freeze que los incluya en el paquete incluido.

Lea esto, será de ayuda: https://github.com/kennethreitz/requests/issues/557#issuecomment-6420819

He creado un programa de Python capaz de cargar archivos en Google Drive. El archivo .py funciona perfectamente y no da ningún error.

Pero como voy a distribuirlo para las personas que no tienen instalado Python, debo convertir el programa y los recursos en un .exe. He hecho esto con cx_Freeze. Lo he usado antes y siempre ha funcionado.

Pero ahora, la API de Google Drive parece estar causando errores cuando se ejecuta .exe. Aquí están los errores que da:

Traceback (most recent call last): File "C:/Python27/lib/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "C:/Python27/lib/runpy.py", line 72, in _run_code exec code in run_globals File "Test.py", line 41, in <module> File "C:/Python27/lib/oauth2client/util.py", line 128, in positional_wrapper return wrapped(*args, **kwargs) File "C:/Python27/lib/oauth2client/client.py", line 1283, in step2_exchange headers=headers) File "C:/Python27/lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.p y", line 1570, in request (response, content) = self._request(conn, authority, uri, request_uri, metho d, body, headers, redirections, cachekey) File "C:/Python27/lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.p y", line 1317, in _request (response, content) = self._conn_request(conn, request_uri, method, body, he aders) File "C:/Python27/lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.p y", line 1252, in _conn_request conn.connect() File "C:/Python27/lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.p y", line 1021, in connect self.disable_ssl_certificate_validation, self.ca_certs) File "C:/Python27/lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.p y", line 80, in _ssl_wrap_socket cert_reqs=cert_reqs, ca_certs=ca_certs) File "C:/Python27/lib/ssl.py", line 383, in wrap_socket ciphers=ciphers) File "C:/Python27/lib/ssl.py", line 141, in __init__ ciphers) ssl.SSLError: [Errno 185090050] _ssl.c:340: error:0B084002:x509 certificate rout ines:X509_load_cert_crl_file:system lib

Da este error después de que el usuario haya ingresado el código de autorización.

Después de algunas depuraciones, descubrí que la línea que causaba este problema era

credentials = flow.step2_exchange(code)

Aquí hay un fragmento del código:

flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) authorize_url = flow.step1_get_authorize_url() webbrowser.open(authorize_url) code = raw_input(''Enter verification code: '').strip() credentials = flow.step2_exchange(code) http = httplib2.Http() http = credentials.authorize(http) drive_service = build(''drive'', ''v2'', http=http)

CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE y REDIRECT_URI están todos configurados correctamente.

Entonces, ¿cuál podría ser el problema aquí?

Si necesita ver más código, pregunte y actualizaré esta pregunta.