python - PyInstaller 'no module named certifi' 错误

标签 python ssl pyinstaller

我正在尝试使用 PyInstaller 编译 Python 程序。当我尝试使用使用 ssl 的函数时,出现导入错误:

ImportError: No module named certifi

我修改了 .spec 文件以包含来自 Python ssl 库的 cacert.pem 文件:

# -*- mode: python -*-
a = Analysis(['main.py'],
             pathex=['D:\\Projects\\soundcloud'],
             hiddenimports=[],
             hookspath=None)
a.datas.append(('cacert.pem', 'cacert.pem', 'DATA'))
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=1,
          name=os.path.join('build\\pyi.win32\\main', 'main.exe'),
          debug=False,
          strip=None,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=True,
               name=os.path.join('dist', 'main'))

但是我得到以下错误:

Traceback (most recent call last):
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\api", line 186,
in run_api_thread
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\api", line 40, 
in authenticate
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\soundcloud.client", 
line 60,
in exchange_token
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\soundcloud.request", 
line 173, in make_request
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\requests.api", 
line 84, in post
File "...\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\requests.api", 
line 39, in request
File "D:\Projects\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\requests.sessions"
line 200, in request
File "D:\Projects\soundcloud\build\pyi.win32\main\out00-PYZ.pyz\requests.models",
line 537, in send
SSLError: [Errno 185090050] _ssl.c:336: 
error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib

在使用 PyInstaller 编译时,包含证书以使 ssl 工作的正确方法是什么?

最佳答案

通过更改环境变量解决了问题:

os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.getcwd(), 'cacert.pem')

关于python - PyInstaller 'no module named certifi' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943536/

相关文章:

python - 如何在python中查看对等方的ssl证书

docker - 无法通过 SSL 使用 Docker for Windows 拉取 docker 镜像

python - pyqtgraph pyinstaller 构建 exe 文件

python - PyInstaller 不会将 PyQt 的图像加载到 GUI

python - PyInstaller:依赖项的备用文件夹位置

python - 不构建模型时,占位符和变量之间有区别吗?

python - 循环此代码以根据先前计算的数据帧获取新的数据帧?

python - 将 gethostbyaddr 与应用程序引擎结合使用

python - 不使用 for 循环迭代数组元素

java - 在 spring-boot 上没有带 jetty 的有效 keystore