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
Post a Comment