python - ssl.SSLError: [Errno 185090050] only in py2exe and pyinstaller package? -


my environment

windows 7

python 2.7

pyscripter

google-api-python-client 1.2

i tried use sample "search keyword" youtube data api

from apiclient.discovery import build apiclient.errors import httperror oauth2client.tools import argparser   # set developer_key api key value apis & auth > registered apps # tab of #   https://cloud.google.com/console # please ensure have enabled youtube data api project. developer_key = "replace_me" youtube_api_service_name = "youtube" youtube_api_version = "v3"  def youtube_search(options):   youtube = build(youtube_api_service_name, youtube_api_version,     developerkey = developer_key)    # call search.list method retrieve results matching specified   # query term.   search_response = youtube.search().list(     q=options.q,     part="id,snippet",     maxresults=options.max_results   ).execute()    videos = []   channels = []   playlists = []    # add each result appropriate list, , display lists of   # matching videos, channels, , playlists.   search_result in search_response.get("items", []):     if search_result["id"]["kind"] == "youtube#video":       videos.append("%s (%s)" % (search_result["snippet"]["title"],                                  search_result["id"]["videoid"]))     elif search_result["id"]["kind"] == "youtube#channel":       channels.append("%s (%s)" % (search_result["snippet"]["title"],                                    search_result["id"]["channelid"]))     elif search_result["id"]["kind"] == "youtube#playlist":       playlists.append("%s (%s)" % (search_result["snippet"]["title"],                                     search_result["id"]["playlistid"]))    print "videos:\n", "\n".join(videos), "\n"   print "channels:\n", "\n".join(channels), "\n"   print "playlists:\n", "\n".join(playlists), "\n"   if __name__ == "__main__":   argparser.add_argument("--q", help="search term", default="google")   argparser.add_argument("--max-results", help="max results", default=25)   args = argparser.parse_args()    try:     youtube_search(args)   except httperror, e:     print "an http error %d occurred:\n%s" % (e.resp.status, e.content) 

in normal time, running source code working fine

but when use py2exe , pyinstall package .py , run exe error this:

traceback (most recent call last):   file "searchvideo.py", line 133, in <module>     youtube_search(search_string[keylist])   file "searchvideo.py", line 41, in youtube_search     developerkey=developer_key)   file "oauth2client\util.pyc", line 132, in positional_wrapper   file "apiclient\discovery.pyc", line 192, in build   file "httplib2\__init__.pyc", line 1570, in request   file "httplib2\__init__.pyc", line 1317, in _request   file "httplib2\__init__.pyc", line 1252, in _conn_request   file "httplib2\__init__.pyc", line 1021, in connect   file "httplib2\__init__.pyc", line 80, in _ssl_wrap_socket   file "ssl.pyc", line 387, in wrap_socket   file "ssl.pyc", line 141, in __init__ ssl.sslerror: [errno 185090050] _ssl.c:343: error:0b084002:x509 certificate rout ines:x509_load_cert_crl_file:system lib 

py2exe setup.py

from distutils.core import setup import py2exe  setup(     console=['searchvideo.py'],     data_files=['cacert.pem', 'cacerts.txt'] ) 

if trying generate executable uses packages httplib2 may want include ca_certs executable.

so, in build_exe options include this:

    {"include_files": ['path_to_your_ca_certs_file'],} 

and remember modify ca_certs path in code, example:

    httplib2.http(ca_certs='path_to_your_ca_certs_file_in_the_executable_package') 

Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -