【发布时间】:2020-04-14 02:45:01
【问题描述】:
我无法在 Ubuntu 18.04 (AWS) 上运行 boto3,最初我认为代码已损坏,但实际上可能是安装本身?
ubuntu@ip-172-30-10-199:~$ sudo -H pip3 install boto3
Requirement already satisfied: boto3 in /usr/lib/python3/dist-packages
ubuntu@ip-172-30-10-199:~$ sudo -H pip3 install botocore
Requirement already satisfied: botocore in /usr/lib/python3/dist-packages
ubuntu@ip-172-30-10-199:~$ python3 --version
**Python 3.6.9**
ubuntu@ip-172-30-10-199:~$ sudo apt-get install python3-boto3
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-boto3 is already the newest version (1.4.2-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ubuntu@ip-172-30-10-199:~$
s3_list.py 文件:
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
运行代码。
ubuntu@ip-172-30-10-199:~$ python3 s3_list.py
Traceback (most recent call last):
File "s3_list.py", line 4, in <module>
s3 = boto3.resource('s3')
File "/home/ubuntu/boto3/__init__.py", line 100, in resource
return _get_default_session().resource(*args, **kwargs)
File "/home/ubuntu/boto3/session.py", line 389, in resource
aws_session_token=aws_session_token, config=config)
File "/home/ubuntu/boto3/session.py", line 263, in client
aws_session_token=aws_session_token, config=config)
File "/home/ubuntu/botocore/session.py", line 835, in create_client
client_config=config, api_version=api_version)
File "/home/ubuntu/botocore/client.py", line 79, in create_client
cls = self._create_client_class(service_name, service_model)
File "/home/ubuntu/botocore/client.py", line 109, in _create_client_class
base_classes=bases)
File "/home/ubuntu/botocore/hooks.py", line 356, in emit
return self._emitter.emit(aliased_event_name, **kwargs)
File "/home/ubuntu/botocore/hooks.py", line 228, in emit
return self._emit(event_name, kwargs)
File "/home/ubuntu/botocore/hooks.py", line 211, in _emit
response = handler(**kwargs)
File "/home/ubuntu/boto3/utils.py", line 61, in _handler
module = import_module(module)
File "/home/ubuntu/boto3/utils.py", line 52, in import_module
__import__(name)
File "/home/ubuntu/boto3/s3/inject.py", line 15, in <module>
from boto3.s3.transfer import create_transfer_manager
File "/home/ubuntu/boto3/s3/transfer.py", line 127, in <module>
from s3transfer.exceptions import RetriesExceededError as \
File "/home/ubuntu/s3transfer/__init__.py", line 134, in <module>
import concurrent.futures
File "/home/ubuntu/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/home/ubuntu/concurrent/futures/_base.py", line 414
raise exception_type, self._exception, self._traceback
^
SyntaxError: invalid syntax
ubuntu@ip-172-30-10-199:~$
我确实有一个包含相应密钥的文件 ~/.aws/credentials。我确实使用这些相同的密钥从我的笔记本电脑(S3 浏览器)访问存储桶。
【问题讨论】:
-
您正在运行的 boto3 既不是您显示的通过 pip 安装的,也不是通过包安装的。不知何故,您将 PYTHONPATH 设置为 ubuntu 的主目录。
标签: python-3.x boto3