s3cmd ImportError: No module named S3.Exceptions

s3cmd ImportError: No module named S3.Exceptions

安装并尝试 运行 s3cmd 1.0.0

后收到错误
s3cmd -h

Problem: ImportError: No module named S3.Exceptions
S3cmd:   unknown version. Module import problem?

Traceback (most recent call last):
  File "/usr/bin/s3cmd", line 1995, in <module>
    from S3.Exceptions import *
ImportError: No module named S3.Exceptions

Your sys.path contains these entries:

升级到最新的 Amazon Linux 发行版 2015.03.0

后出现此错误

看起来错误发生是因为 python2.7 现在是 Amazon Linux 2015.03.0+ 中的默认 python 版本 如果您将 python 改回2.6 和 运行 s3cmd 应该可以正常工作

update-alternatives --set python /usr/bin/python2.6
s3cmd -h

s3cmd 命令后 运行 您可以将 python 放回 2.7 以用于 yum 和其他实用程序:

update-alternatives --set python /usr/bin/python2.7
yum install <package>
vi /usr/bin/s3cmd

将 2.6 添加到第一行,因此它看起来像:

#!/usr/bin/python2.6

保存文件,s3cmd 将运行。只要您的系统上有 /usr/bin/python2.6

我在使用 s3cmd 时遇到了类似的错误,但模块名称不同: ImportError: No module named S3.ExitCodes

就我而言,我可以这样解决问题: yum install python-pip 然后 pip install s3cmd。 之后 s3cmd 工作正常。

之前的答案都不适合我,但从 sourcegraph aws-cli dockerfile 中复制几行对我有用:

从python:2
运行 apt-get update -q
运行 apt-get install -qy python-pip groff-base
运行 pip 安装 awscli

s3cmd 在 sys.path 中与我的 python 的一个版本一起工作,它正在保持其他版本。

sudo vi /usr/bin/s3cmd

你会在起跑线上看到这一点。

import sys

我有两个 python 版本 python3.5 和 python3.6
让 运行 python3.5 然后 python3.6

import sys
print('\n'.join(sys.path))

将您的系统路径与 s3cmd 错误系统路径相匹配。这将使您确信您需要为此更改 sys 路径中的 python 版本。
现在:如何更改 sys.path python 版本?

echo $PYTHONPATH
sudo vi ~/.bashrc
export PYTHONPATH=/usr/bin/python3.6

PYTHONPATH Help Link