gpt4 book ai didi

python - Errno 185090050 _ssl.c :343: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib, 被PyInstaller打包成exe后

转载 作者:太空狗 更新时间:2023-10-30 01:29:03 25 4
gpt4 key购买 nike

我编写了一个 python 脚本来检查 GCS 中的文件,它使用 wxpython 生成 GUI。为了验证我是这样做的(按照谷歌示例代码中的方式 -> http://code.google.com/p/google-cloud-platform-samples/source/browse/file-transfer-json/chunked_transfer.py?repo=storage ):

flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, 
# the secrets file I put in same folder
scope=scope,
message=MISSING_CLIENT_SECRETS_MESSAGE)

credential_storage = CredentialStorage(CREDENTIALS_FILE) # the file to store
# authentication credentials
credentials = credential_storage.get()
if credentials is None or credentials.invalid:
credentials = run_oauth2(flow, credential_storage)

self.printLog('Constructing Google Cloud Storage service...')
http = credentials.authorize(httplib2.Http())
return discovery_build('storage', 'v1beta1', http=http)

上面的代码包含在我的Python脚本中,当它只是一个python .py文件时效果很好,后来我在win 7 64位中使用pyinstaller将它转换为.exe(我也把 secret 文件放在同一个文件夹作为 .exe 文件)使用下面的命令

C:\gcs_file_check>python pyinstaller-2.0\pyinstaller.py -w gcs_file_check.py

当点击 exe 时,来自 Google 的 Request for Permission 页面 正确启动(因为它运行的是 Python 脚本而不是 exe),但是在我点击接受后,上面的代码将抛出异常:

[Errno 185090050] _ssl.c:343: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib

而且我可以看到文件 credentials.json 不是由 .exe 创建的,而 Python 脚本可以正确创建此文件。

有人能知道这是怎么发生的以及如何解决吗?感谢每一个答案!

===================

更新于 04/16:

我添加了调试代码,发现异常正是来自下面的代码:

if credentials is None or credentials.invalid:
credentials = run_oauth2(flow, credential_storage)

===================

更新:

添加更多细节,之前我使用的是oauth2client.tools.run()

from oauth2client.tools import run as run_oauth2

现在我按照源代码的建议更改为 run_flow() -> https://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.tools-pysrc.html#run

from oauth2client.tools import run_flow as run_oauth2

现在这部分代码是:

parser=argparse.ArgumentParser(description=__doc__,                  
formatter_class=argparse.RawDescriptionHelpFormatter,
parents=[tools.argparser] )
flags = tools.argparser.parse_args(sys.argv[1:])

if credentials is None or credentials.invalid:
credentials = run_oauth2(flow, credential_storage, flags)

但仍然,python代码运行良好,在PyInstaller打包为.exe后抛出相同的异常[Errno 185090050]。

最佳答案

试试这个,https://github.com/kennethreitz/requests/issues/557“在将 pyinstaller 与 Httplib2 结合使用时,我也遇到了类似的错误。您需要将 ssl 客户端证书文件的路径显式传递给“cert”参数 http 请求。另外,你需要打包你的。 .pem 文件作为 pyinstaller 中的数据文件。”

关于python - Errno 185090050 _ssl.c :343: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib, 被PyInstaller打包成exe后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com