3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

awsコマンドでPythonのNo module named 'encodings'のエラーが出る

概要

MacでAWS CLIのコマンドを実行した時、いつからかNo module named 'encodings'というコマンドが出るようになりました。この時にやったことを色々書いてます。
ただ、結論を先に言うと、Python3を再インストールして直しました。

事象と試したこと

awsコマンドを実行すると、以下のようにエラーが出るようになり色々ググってみることに。補足すると、AWS CLIの中でPythonを使っているため、Pythonも正しく設定されている必要があります。

$ aws configure --profile XXXX
...(省略)...
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
...(省略)...

試したのはいずれもパス関連の修正です。

1. PYTHONHOMEの設定を変えてみる

  • エラーをググると、PYTHONHOMEのパスを疑えというページが出てくるため.bash_profileを確認してみると、確かに設定されていませんでした。そのため、デフォルト値である/usr/localを設定してみることに。
  • 結果、エラーは変わりましたが、syntax errorという別のエラーが出てくることに...

2. PYTHONPATHの設定を変えてみる

  • これも同様に.bash_profileに色々な値を設定してみましたが、エラーは変わっても解決には至らず...

Macでは/usr/bin/pythonがデフォルトでPython2系のバージョンになっています。そのため、pyenvやAnacondaなど別のツールを使ってPython3をインストールしていましたが、この時Python3のパスは/usr/bin/pythonから変えていませんでした。いろいろ作業をしていく中でPyhton3のパスがおかしくなってしまったようです。
※pyenvやAnacondaが原因ではなく、作業のうちに環境を壊してしまったことが原因だと考えられます。

解決策

pyenvおよびAndacondaをアンインストールした後、以下を参考にPython3を再インストールしました。
【Python3】まっさらなMacにPythonの最新バージョンをインストールする手順まとめ

上記手順の中で、/usr/bin/pythonにはPython3のパスを当てるようにしました。無事、awsコマンドも通るようになりました。

雑感

正直、最初から再インストールしておけば良かった...と思いました。IDEでのインタプリタ再設定などが面倒かなと思ったのですが、ハマってた時間に比べれば全然短いです。

何事も諦めが肝心ですね....

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?