首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyInstaller 'no module named certifi‘错误

PyInstaller 'no module named certifi‘错误
EN

Stack Overflow用户
提问于 2012-10-18 05:17:16
回答 1查看 4.5K关注 0票数 0

我正在尝试使用PyInstaller编译Python程序。当我尝试使用使用ssl的函数时,get an Import Error

代码语言:javascript
复制
ImportError: No module named certifi

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

代码语言:javascript
复制
# -*- 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'))

但随后我得到了以下错误:

代码语言:javascript
复制
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工作的正确方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-18 05:19:40

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

代码语言:javascript
复制
os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.getcwd(), 'cacert.pem')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12943536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档