安装camelot-py后运行boto3脚本出现AttributeError问题求助
问题解决:AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY'
问题背景
安装camelot-py包后,运行boto3脚本触发以下错误:
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY'
已尝试升级pyopenssl和cryptography,但错误未消除。当前相关依赖版本:
- boto3 = 1.26.138
- cryptography = 2.1.4
- pyOpenSSL = 17.5.0
完整报错堆栈:
Traceback (most recent call last): File "/home/forge/scripts/cgi-scripts/check_boto.py", line 1, in <module> import boto3 File "/usr/local/lib/python3.10/dist-packages/boto3/__init__.py", line 17, in <module> from boto3.session import Session File "/usr/local/lib/python3.10/dist-packages/boto3/session.py", line 17, in <module> import botocore.session File "/usr/local/lib/python3.10/dist-packages/botocore/session.py", line 26, in <module> import botocore.client File "/usr/local/lib/python3.10/dist-packages/botocore/client.py", line 15, in <module> from botocore import waiter, xform_name File "/usr/local/lib/python3.10/dist-packages/botocore/waiter.py", line 18, in <module> from botocore.docs.docstring import WaiterDocstring File "/usr/local/lib/python3.10/dist-packages/botocore/docs/__init__.py", line 15, in <module> from botocore.docs.service import ServiceDocumenter File "/usr/local/lib/python3.10/dist-packages/botocore/docs/service.py", line 14, in <module> from botocore.docs.client import ClientDocumenter, ClientExceptionsDocumenter File "/usr/local/lib/python3.10/dist-packages/botocore/docs/client.py", line 17, in <module> from botocore.docs.example import ResponseExampleDocumenter File "/usr/local/lib/python3.10/dist-packages/botocore/docs/example.py", line 13, in <module> from botocore.docs.shape import ShapeDocumenter File "/usr/local/lib/python3.10/dist-packages/botocore/docs/shape.py", line 19, in <module> from botocore.utils import is_json_value_header File "/usr/local/lib/python3.10/dist-packages/botocore/utils.py", line 37, in <module> import botocore.httpsession File "/usr/local/lib/python3.10/dist-packages/botocore/httpsession.py", line 45, in <module> from urllib3.contrib.pyopenssl import ( File "/usr/local/lib/python3.10/dist-packages/urllib3/contrib/pyopenssl.py", line 50, in <module> import OpenSSL.crypto 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 1550, in <module> class X509StoreFlags(object): File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1568, in X509StoreFlags NOTIFY_POLICY = _lib.X509_V_FLAG_NOTIFY_POLICY AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY'. Did you mean: 'X509_V_FLAG_EXPLICIT_POLICY'?
解决方法
1. 修复依赖版本冲突
你的pyOpenSSL=17.5.0和cryptography=2.1.4版本过旧,且与系统OpenSSL库不兼容。X509_V_FLAG_NOTIFY_POLICY是较新版本OpenSSL才有的常量,旧版本绑定库不支持该字段,导致报错。
2. 强制更新兼容版本
执行以下命令更新到兼容的依赖版本:
pip install --upgrade pyOpenSSL>=23.0.0 cryptography>=40.0.0
注:多Python环境下需用对应环境的pip(如pip3)执行。
3. 处理系统级OpenSSL冲突
若更新后仍报错,可能是系统全局OpenSSL版本过低:
- 以Ubuntu为例,升级系统OpenSSL:
sudo apt update && sudo apt install --only-upgrade openssl
- 使用虚拟环境隔离依赖:创建新虚拟环境,重新安装boto3和camelot-py,避免系统预装库干扰。
4. 验证修复
运行以下测试脚本确认问题解决:
import boto3 s3 = boto3.client('s3') print("boto3导入成功")
内容的提问来源于stack exchange,提问作者Ajay dev
相关产品推荐
相关产品推荐

