导入snowflake.sqlalchemy的URL时触发X509_V_FLAG_CB_ISSUER_CHECK属性错误
解决
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'错误 问题背景
在Ubuntu 20、Python 3.8、pip 22环境下,安装snowflake-sqlalchemy包后,在Python Shell或Spark Shell中执行from snowflake.sqlalchemy import URL导入操作时触发错误,核心报错为:
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
完整错误栈如下:
Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module> import apport.fileutils File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module> import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 1, in <module> import requests File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 655, in _load_unlocked File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible File "<frozen zipimport>", line 259, in load_module File "/usr/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl/requests/__init__.py", line 95, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 655, in _load_unlocked File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible File "<frozen zipimport>", line 259, in load_module File "/usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 46, in <module> File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import crypto, SSL File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module> class X509StoreFlags(object): File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
解决方法
方法1:降级pyOpenSSL至兼容版本
该错误通常因pyOpenSSL版本过高,与系统内置OpenSSL库不兼容导致。执行以下命令降级:
pip install pyopenssl==20.0.1
完成后重新尝试导入操作。
方法2:更新系统OpenSSL库
若降级pyOpenSSL无效,可尝试更新系统级OpenSSL组件:
sudo apt update && sudo apt install --only-upgrade openssl libssl-dev
更新完成后,强制重新安装snowflake-sqlalchemy及其依赖:
pip install --force-reinstall snowflake-sqlalchemy
方法3:使用虚拟环境隔离依赖
避免全局依赖冲突,创建独立虚拟环境并安装依赖:
# 创建Python 3.8虚拟环境 python3.8 -m venv snowflake_env # 激活虚拟环境 source snowflake_env/bin/activate # 更新pip到最新版本 pip install pip --upgrade # 安装snowflake-sqlalchemy pip install snowflake-sqlalchemy
在虚拟环境中执行导入操作,可规避多数依赖版本冲突问题。
内容的提问来源于stack exchange,提问作者suryaares
相关产品推荐
相关产品推荐

