AWS CLI上传失败:未知编码:idna

时间:2018-11-04 18:53:52

标签: python-3.x amazon-s3 aws-cli

我正在尝试使用AWS CLI将一些文件推送到s3,但遇到错误:

upload failed: ... An HTTP Client raised and unhandled exception: unknown encoding: idna

我相信这是Python特有的问题,但是我不确定如何为我的python解释器启用这种类型的编码。我刚刚刚安装了Python 3.6,并验证了Powershell和cmd正在使用它。

$> python --version Python 3.6.7

如果这不是特定于Python的问题,了解我也刚刚安装了AWS CLI并对其进行了正确配置可能会有所帮助。让我知道是否还有其他我想解决的问题。谢谢。

5 个答案:

答案 0 :(得分:7)

我在Windows中遇到了同样的问题。

在研究了问题之后,我意识到问题出在使用MSI安装程序(x64)安装的aws-cli中。从已安装的程序列表中删除“ AWS命令行界面”并使用pip安装aws-cli之后,问题得以解决。

我还尝试安装MSI安装程序x32,但问题仍然存在。

答案 1 :(得分:2)

作为一种解决方法,将以下导入语句放入 aws-script.py 文件中。

import encodings.idna

32位版本的完整路径为 c:\ Program Files(x86)\ Amazon \ AWSCLI \ bin \ aws-script.py

64位版本的完整路径为 C:\ Program Files \ Amazon \ AWSCLI \ bin \ aws-script.py

我在this answer

中找到了类似问题的解决方案

答案 2 :(得分:0)

Windows 上,这可能是使用MSI安装程序安装的AWS-cli工具的问题。 似乎解决此问题的最佳方法是使用python安装的aws-cli工具。

先决条件:Python3Pip3

验证您已安装Python和Pip

C:\> python --version
Python 3.7.1
C:\> pip3 --version
pip 18.1 from c:\program files\python37\lib\site-packages\pip (python 3.7)

卸载AWS-CLI工具MSI安装程序

使用pip安装aws-cli工具

C:\> pip3 install awscli

检查aws-cli是否已在您的路径中;如果没有,请添加

C:\> where aws
C:\Program Files\Python37\Scripts\aws

如果没有,请找到aws-cli工具的部署位置,并将路径添加到PATH环境变量(可以在“控制面板”>“系统”>“高级系统设置”>“环境变量...”中进行设置)。

以下已部署的AWS cli工具的通用路径:

Python 3和pip3 – C:\Program Files\Python37\Scripts\

早期版本的Windows中的Python 3和pip3 --user选项– %USERPROFILE%\AppData\Local\Programs\Python\Python37\Scripts

Windows 10上的Python 3和pip3 --user选项– %USERPROFILE%\AppData\Roaming\Python\Python37\Scripts

答案 3 :(得分:-1)

我遇到了相同的错误,并通过更改AWC CLI和Python路径的顺序进行了修复:

之前:

PATH=C:\Program Files\Python35\Scripts\;C:\Program Files\Python35\;...;C:\Program Files\Amazon\AWSCLI\bin\;...

之后:

PATH=...;C:\Program Files\Amazon\AWSCLI\bin\;...;C:\Program Files\Python35\Scripts\;C:\Program Files\Python35\

看起来像Python3会影响AWS CLI,这只是一个cmd调用Python程序。

答案 4 :(得分:-2)

即使我面临着同样的问题。我在Windows Server 2008 R2上运行它。我试图使用以下命令将大约500个文件上传到s3。

  

aws s3 cp sourcedir s3bucket --recursive --acl   bucket-owner-full-control --profile profilename

它运行良好,几乎可以上传所有文件,但是对于最初的2个或3个文件,它经常失败并显示以下错误:HTTP客户端引发且未处理的异常:未知编码:idna

此错误不一致。上传失败的文件,如果尝试再次运行它可能会成功。太奇怪了。

在反复试验的基础上进行了尝试,并且运行良好。

解决方案:

  1. 已卸载Python 3和AWS CLI。
  2. 已安装Python 2.7.15
  3. 在环境变量PATH中添加了python安装路径。还将pythoninstalledpath \ scripts添加到PATH变量。
  4. AWS CLI在Windows Server 2008上的MS Installer不能很好地工作,而是使用了PIP。

命令:

  

pip install awscli

注意:要使pip正常工作,请不要忘记将pythoninstalledpath \ scripts添加到PATH变量中。

您应该具有以下版本:

命令:

  

aws --version

输出:aws-cli / 1.16.72 Python / 2.7.15 Windows / 2008ServerR2 botocore / 1.12.62

Voila!错误消失了!