概要
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でのインタプリタ再設定などが面倒かなと思ったのですが、ハマってた時間に比べれば全然短いです。
何事も諦めが肝心ですね....