動機
aws cli をアップデートしたら動かなくなってしまった(確か)
経緯はうろ覚えだけど、動かなくなってしまった。バタバタしてて放置してたんだけど、さすがに必要になったので、対応する
~ ❯ python --version Python 2.7.15 ~ ❯ which python /usr/local/bin/python ~ ❯ aws zsh: /usr/local/bin/aws: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory ~ ❯
aws コマンドがみにいくpython の場所を変えられればいいのだが。
ちなみにマシンはだいたいこんな感じ
~ ❯ uname -rsvp Darwin 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 i386
そもそも AWS CLI どうやってインストールしたんだっけ
aws cli は pip でインストールしたように記憶している。確認したら pip (python2系の方)だった。
~ ❯ pip list|grep aws awscli 1.16.43
pip3 にはいない
~ ❯ pip3 list Package Version ---------- ------- nose 1.3.7 numpy 1.15.2 pip 18.0 setuptools 40.4.3 wheel 0.32.0
python は homebrew でインストールしていたやつのようだ
~ ❯ ls -al /usr/local/bin/python lrwxr-xr-x 1 ore admin 38 10 22 14:49 /usr/local/bin/python -> ../Cellar/python@2/2.7.15_1/bin/python
なんか2個ある。python
が3系で python@2
が2系の様子。
~ ❯ brew list |grep python python python@2
AWS CLI で利用する Python を変更する
普通にアンインストールする
アンインストールしてインストールしなおしちゃえ
~ ❯ pip uninstall awscli Uninstalling awscli-1.16.43: Would remove: /Users/ore/Library/Python/2.7/bin/aws /Users/ore/Library/Python/2.7/bin/aws.cmd /Users/ore/Library/Python/2.7/bin/aws_bash_completer /Users/ore/Library/Python/2.7/bin/aws_completer /Users/ore/Library/Python/2.7/bin/aws_zsh_completer.sh /Users/ore/Library/Python/2.7/lib/python/site-packages/awscli-1.16.43.dist-info/* /Users/ore/Library/Python/2.7/lib/python/site-packages/awscli/* Proceed (y/n)? y Successfully uninstalled awscli-1.16.43
/Users/ore/Library/Python/2.7/bin/ のしたは消えたけど、bin のしたは残ったまま
~ ❯ which aws /usr/local/bin/aws ~ ❯ aws zsh: /usr/local/bin/aws: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory
お前は誰なんだ
~ ❯ ls /usr/local/opt/python Frameworks INSTALL_RECEIPT.json Python Launcher 3.app bin libexec IDLE 3.app LICENSE README.rst lib share ~ ❯ cd bin bin ❯ ls digdag pack bin ❯
お前は誰なんだ2
bin ❯ ll /usr/local/bin/|grep aws -rwxr-xr-x 1 ore admin 834 6 18 14:06 aws -rwxr-xr-x 1 ore admin 1432 6 18 14:06 aws.cmd -rwxr-xr-x 1 ore admin 204 6 18 14:06 aws_bash_completer -rwxr-xr-x 1 ore admin 1155 6 18 14:06 aws_completer -rwxr-xr-x 1 ore admin 1807 6 18 14:06 aws_zsh_completer.sh
おりゃー!
bin ❯ sudo rm /usr/local/bin/aws* Password: bin ❯ ll /usr/local/bin/|grep aws bin ❯ aws zsh: command not found: aws bin ❯
AWS CLI を再インストール
macOS で AWS Command Line Interface をインストールする - AWS Command Line Interface
上記をみながら再インストール。前回は pip 経由でインストールしたようだが(あまり覚えていない)、今回はバンドルインストーラ(昔はなかった)でインストールしたい。リンク先はpyhton3推奨のような書き方になっているが、自分が python は2系を利用したいので、そこだけ変更する。といっても、/usr/local/bin/python
が2系を向いているので、awsコマンドがちゃんとそこを参照できるようになればいいだけ。
とりあえずダウンロード&解凍
~ ❯ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10.5M 100 10.5M 0 0 320k 0 0:00:33 0:00:33 --:--:-- 628k ~ ❯ unzip awscli-bundle.zip Archive: awscli-bundle.zip inflating: awscli-bundle/install inflating: awscli-bundle/packages/docutils-0.14.tar.gz inflating: awscli-bundle/packages/python-dateutil-2.6.1.tar.gz inflating: awscli-bundle/packages/awscli-1.16.57.tar.gz inflating: awscli-bundle/packages/urllib3-1.24.1.tar.gz inflating: awscli-bundle/packages/jmespath-0.9.3.tar.gz inflating: awscli-bundle/packages/argparse-1.2.1.tar.gz inflating: awscli-bundle/packages/ordereddict-1.1.tar.gz inflating: awscli-bundle/packages/six-1.11.0.tar.gz inflating: awscli-bundle/packages/simplejson-3.3.0.tar.gz inflating: awscli-bundle/packages/colorama-0.3.9.tar.gz inflating: awscli-bundle/packages/python-dateutil-2.7.5.tar.gz inflating: awscli-bundle/packages/virtualenv-15.1.0.tar.gz inflating: awscli-bundle/packages/futures-3.2.0.tar.gz inflating: awscli-bundle/packages/s3transfer-0.1.13.tar.gz inflating: awscli-bundle/packages/urllib3-1.22.tar.gz inflating: awscli-bundle/packages/rsa-3.4.2.tar.gz inflating: awscli-bundle/packages/PyYAML-3.13.tar.gz inflating: awscli-bundle/packages/botocore-1.12.47.tar.gz inflating: awscli-bundle/packages/pyasn1-0.4.4.tar.gz inflating: awscli-bundle/packages/setup/setuptools_scm-1.15.7.tar.gz
いけー
~ ❯ sudo /usr/local/bin/python awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws Password: Running cmd: /usr/local/opt/python@2/bin/python2.7 virtualenv.py --no-download --python /usr/local/opt/python@2/bin/python2.7 /usr/local/aws Running cmd: /usr/local/aws/bin/pip install --no-cache-dir --no-index --find-links file:///Users/ore/awscli-bundle/packages/setup setuptools_scm-1.15.7.tar.gz Running cmd: /usr/local/aws/bin/pip install --no-cache-dir --no-index --find-links file:///Users/ore/awscli-bundle/packages awscli-1.16.57.tar.gz You can now run: /usr/local/bin/aws --version
えいっ
~ ❯ aws --version aws-cli/1.16.57 Python/2.7.15 Darwin/17.5.0 botocore/1.12.47
なおったーよかったー。ちなみに、AWS CLI が利用するpyhtonは、AWS CLI のインストール時に指定するので(作用際はリンク先のAWSの記事参照)、アンインストール&再インストールが正解。
注記
デフォルトでは、インストールスクリプトはシステムのデフォルトバージョンの Python で実行されます。別のバージョンの Python がインストールされており、それを使用して AWS CLI をインストールする場合は、Python の実行可能ファイルへの絶対パスを指定してそのバージョンでインストールスクリプトを実行します。以下に例を示します。
$ sudo /usr/local/bin/python2.7 awscli-bundle/install -i /usr/local/aws -b /usr/local/b