You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python boto3访问AWS S3是否存在同目录多文件调用限制?

问题解答

结论

boto3不存在仅支持单个Python文件调用的限制,同工作目录下的任意Python文件都可以正常调用boto3访问AWS服务,你遇到的问题由代码错误、环境配置不一致或凭证配置缺失导致。

首先排查代码错误

你提供的代码存在2个明显问题:

  • 导入模块错误:Python内置的系统模块是小写os,代码里写的import OS会直接抛出模块不存在异常,导致代码无法运行,修改为import os即可。
  • 函数重复定义:代码中两次定义create_bucket函数,前者还存在create_bucket(=bucket_name)的语法错误,虽然你实际调用的是upload_small_file,但冗余错误代码会增加排查难度,建议删除错误的冗余函数定义。

同目录不同文件运行失败的常见原因及排查方法

  • 运行环境不一致:PyCharm中不同Python文件可独立配置运行时的虚拟环境,若第一个文件使用的虚拟环境安装了boto3,第二个文件切换到未安装boto3的虚拟环境,就会调用失败。可在两个文件中都添加代码import boto3; print(boto3.__file__)运行,对比输出的boto3安装路径是否一致,不一致则在PyCharm右上角运行配置中统一选择同一个已安装boto3的虚拟环境即可。
  • 凭证配置缺失:boto3会按代码显式传入凭证>环境变量>用户根目录下.aws/credentials配置文件>运行环境绑定的IAM角色的顺序查找AWS访问凭证,若你第一个文件硬编码了凭证、或运行时配置了专属环境变量,第二个文件未同步配置,就会因无法获取凭证导致连接失败。可在报错的文件中添加代码print(boto3.Session().get_credentials()),输出为None则说明凭证配置异常,可统一在用户根目录创建.aws/credentials文件配置全局凭证,或测试时在代码中显式传入凭证:
s3 = boto3.client(
    's3',
    aws_access_key_id='你的AWS访问密钥ID',
    aws_secret_access_key='你的AWS秘密访问密钥',
    region_name='ap-south-1'
)
  • 运行工作目录不一致:PyCharm运行不同文件时默认的工作目录可能不同,若你依赖当前工作目录下的本地配置文件,工作目录不对会导致配置文件读取失败。可在两个文件中添加代码import os; print(os.getcwd())运行,对比输出的工作目录是否一致,不一致则在运行配置中统一设置工作目录即可。

验证方法

完成上述配置后,可在报错的文件中运行最简测试代码验证连接:

import boto3
s3 = boto3.client('s3', region_name='ap-south-1')
# 列出所有存储桶验证连接
print(s3.list_buckets())

内容的提问来源于stack exchange,提问作者navin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:36:02