gpt4 book ai didi

python - Py2Exe 没有这样的文件或目录错误

转载 作者:行者123 更新时间:2023-11-28 19:17:11 25 4
gpt4 key购买 nike

我有一个使用外部模块(“请求”)的简单 python 2.7 脚本。我正在使用 py2exe,但在运行 exe 时遇到问题。

测试.py代码:::

import requests
r = requests.get('https://api.github.com/')
print r.status_code
print r.text

setup.py 代码::::

from distutils.core import setup
import py2exe
setup(console=['youtube.py'], options = {'py2exe': { 'packages':['requests']}})

py2exe 适用于内部模块..但外部模块出错..错误日志::

D:\dist>youtube.exe
Traceback (most recent call last):
File "youtube.py", line 2, in <module>
File "requests\api.pyc", line 69, in get
File "requests\api.pyc", line 50, in request
File "requests\sessions.pyc", line 465, in request
File "requests\sessions.pyc", line 573, in send
File "requests\adapters.pyc", line 431, in send
requests.exceptions.SSLError: [Errno 2] No such file or directory

最佳答案

问题是函数 requests.certs.where 在编译时为名为 cacert.pem 的文件返回了不正确的路径。 requests.utils.DEFAULT_CA_BUNDLE_PATH 使用 requests.certs.where() 设置,然后该变量由各种其他函数导入。要解决此问题,您可以将 C:\Python27\Lib\site-packages\requests\cacert.pem 复制到包含您的 exe 的目录,然后将该位置硬编码到您的 requests.utils 文件

from os.path import join, abspath
DEFAULT_CA_BUNDLE_PATH = join(abspath('.'), 'cacert.pem')

或者从你的主模块

import requests
from os.path import join, abspath
requests.utils.DEFAULT_CA_BUNDLE_PATH = join(abspath('.'), 'cacert.pem')

关于python - Py2Exe 没有这样的文件或目录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289972/

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