Python3.11环境下pandas与boto3加载异常问题求助
问题解决:boto3凭证错误与numpy依赖异常
问题分析
- 导入boto3时触发
botocore.exceptions.NoCredentialsError:boto3初始化阶段会自动尝试加载AWS凭证(环境变量、本地配置文件等),无有效凭证时就会抛出该错误,哪怕你没主动调用AWS服务。 - 移除boto3导入后numpy报错找不到boto3:测试框架(如pytest)会扫描
conftest.py、test_network.py这类测试文件,即使主脚本移除了boto3,测试上下文仍会加载这些文件里的boto3引用,触发依赖检查;也可能是pandas/numpy环境中存在依赖boto3的扩展插件。
解决方案
处理NoCredentialsError
- 若无需调用真实AWS服务,可禁用boto3的自动凭证加载:
import boto3 from botocore.config import Config # 配置无凭证的默认会话 boto3.setup_default_session(config=Config(signature_version=None)) - 或在测试环境中设置空凭证变量(可放在
conftest.py中):import os os.environ['AWS_ACCESS_KEY_ID'] = 'test' os.environ['AWS_SECRET_ACCESS_KEY'] = 'test' - 使用
moto库mock AWS服务,彻底绕过真实凭证检查:from moto import mock_aws @mock_aws def test_your_case(): # 测试逻辑,boto3调用会被完全mock pass
处理numpy报错找不到boto3
- 调整测试文件中boto3的导入位置,从全局导入改为仅在需要的测试函数内导入:
# 不推荐:全局导入 import boto3 def test_demo(): pass # 推荐:函数内按需导入 def test_demo(): import boto3 # 测试逻辑 - 重新安装纯净版pandas/numpy,排除第三方扩展的影响:
pip uninstall pandas numpy -y pip install pandas numpy - 限制测试框架的扫描范围,避免加载无关文件:
pytest 指定测试文件路径 -v
内容的提问来源于stack exchange,提问作者flyerhawk
相关产品推荐
相关产品推荐

