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を新たにインストールして適切に設定したことを知っておくと役立ちます。この問題を解決するために私が行方不明になっているものがあるかどうかを教えてください。ありがとう。
Windowsでも同じ問題が発生しました。
問題を調査した後、MSIインストーラー(x64)を使用してインストールされたaws-cliに問題があることに気付きました。インストールされたプログラムのリストから「AWS Command Line Interface」を削除し、pipを使用してaws-cliをインストールすると、問題は解決しました。
また、MSIインストーラーx32をインストールしようとしましたが、問題はありませんでした。
回避策として、次のインポート文を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 で同様の問題に対するこの解決策を見つけました
Windowsでは、おそらくMSIインストーラーを使用してインストールされるAWS-cliツールの問題です。この問題を修正する最良の方法は、pythonと共にインストールされたaws-cliツールを使用することです。
前提条件:Python3
およびPip3
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
Python 3およびWindows 10のpip3 --userオプション– %USERPROFILE%\AppData\Roaming\Python\Python37\Scripts
私は同じエラーに遭遇し、AWC CLIとPython pathの順序を変更することで修正しました:
前:
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に影響を与えているように見えます。AWSCLIは、Pythonプログラムを呼び出すコマンドです。