awscli をインストールする時に pipenv 使ってみた

# やりたいこと
awscli をアップグレードしたい。
これをやれと書いてる。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html#post-install-upgrade

```
$ pip3 install awscli --upgrade --user
```

でも、 pip で入れてなくて、バンドルされたインストーラでインストールしてた。

# macOS の場合
バンドルされたインストーラでのインストールが推奨されてる。

>macOS に AWS Command Line Interface (AWS CLI) をインストールする方法としては、バンドルされたインストーラを使用することが推奨されます。バンドルされたインストーラにはすべての依存関係が含まれており、オフラインで使用できます。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-macos.html

ただ、どちらにせよ Python が必要。
バンドルされたインストーラのインストールプログラムが Python で実行されるので。

```
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
```

# とりあえずバンドルされたインストーラの awscli をアンインストール
これやる。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-bundle.html#install-bundle-uninstall

```
$ sudo rm -rf /usr/local/aws
$ sudo rm /usr/local/bin/aws
```
はい、きれい。

# pipenv 使ってみる
今までは普通に pyenv 使ってたが、改めて調べてみると、 anyenv やら pipenv やら色々出てくる。
結局どれ使ったら良いんだと葛藤し、結果 pipenv を使ってみることにした。

### 前提

```
$ brew --version
Homebrew 2.1.16
Homebrew/homebrew-core (git revision d82e8; last commit 2019-11-12)
Homebrew/homebrew-cask (git revision 64b5f; last commit 2019-11-12)

## Homebrew でインストール済み
$ python -V
Python 3.7.5
```

### pipenv インストール
Homebrew でインストール。
pyenv も一緒にインストールしておくと良いことがあるよということなのでインストール。

```
$ brew install pipenv
$ brew install pyenv
```

適当なディレクトリで Python インストール

```
$ pipenv --python 3.7.5
Creating a virtualenv for this project…
Pipfile: /Users/matsuki/Pipfile
Using /Users/matsuki/.pyenv/versions/3.7.5/bin/python3 (3.7.5) to create virtualenv…
⠸ Creating virtual environment...Using base prefix '/Users/matsuki/.pyenv/versions/3.7.5'
New python executable in /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW/bin/python3
Also creating executable in /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /Users/matsuki/.pyenv/versions/3.7.5/bin/python3

✔ Successfully created virtual environment!
Virtualenv location: /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW
Creating a Pipfile for this project…
```

入る。

```
matsuki@matsuki1 ~> pipenv shell
Launching subshell in virtual environment…
Welcome to fish, the friendly interactive shell
matsuki@matsuki1 ~>  source /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW/bin/activate.fish
```

確認。

```
(matsuki) matsuki@matsuki1 ~> python -V
Python 3.7.5

(matsuki) matsuki@matsuki1 ~> pip list
Package    Version
---------- -------
pip        19.3.1
setuptools 41.6.0
wheel      0.33.6
```

OK

# awscli インストール
pip 使ってインストールもできるけど今回は、バンドルされたインストーラでインストール。
コマンドはこれ。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-macos.html#install-bundle-macos

```
(matsuki) matsuki@matsuki1 ~> curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
                              unzip awscli-bundle.zip
                              sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11.8M  100 11.8M    0     0   462k      0  0:00:26  0:00:26 --:--:--  214k
Archive:  awscli-bundle.zip
  inflating: awscli-bundle/install
  inflating: awscli-bundle/packages/simplejson-3.3.0.tar.gz
  inflating: awscli-bundle/packages/colorama-0.4.1.tar.gz
  inflating: awscli-bundle/packages/pyasn1-0.4.7.tar.gz
  inflating: awscli-bundle/packages/botocore-1.13.15.tar.gz
  inflating: awscli-bundle/packages/awscli-1.16.279.tar.gz
  inflating: awscli-bundle/packages/virtualenv-15.1.0.tar.gz
  inflating: awscli-bundle/packages/ordereddict-1.1.tar.gz
  inflating: awscli-bundle/packages/argparse-1.2.1.tar.gz
  inflating: awscli-bundle/packages/six-1.13.0.tar.gz
  inflating: awscli-bundle/packages/colorama-0.3.9.tar.gz
  inflating: awscli-bundle/packages/futures-3.3.0.tar.gz
  inflating: awscli-bundle/packages/python-dateutil-2.8.0.tar.gz
  inflating: awscli-bundle/packages/urllib3-1.22.tar.gz
  inflating: awscli-bundle/packages/jmespath-0.9.4.tar.gz
  inflating: awscli-bundle/packages/PyYAML-5.1.2.tar.gz
  inflating: awscli-bundle/packages/docutils-0.15.2.tar.gz
  inflating: awscli-bundle/packages/urllib3-1.25.7.tar.gz
  inflating: awscli-bundle/packages/python-dateutil-2.6.1.tar.gz
  inflating: awscli-bundle/packages/rsa-3.4.2.tar.gz
  inflating: awscli-bundle/packages/s3transfer-0.2.1.tar.gz
  inflating: awscli-bundle/packages/PyYAML-3.13.tar.gz
  inflating: awscli-bundle/packages/setup/setuptools_scm-1.15.7.tar.gz
Password:
Running cmd: /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW/bin/python virtualenv.py --no-download --python /Users/matsuki/.local/share/virtualenvs/matsuki-hIH2zslW/bin/python /usr/local/aws
Running cmd: /usr/local/aws/bin/pip install --no-cache-dir --no-index --find-links file:///Users/matsuki/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/matsuki/awscli-bundle/packages awscli-1.16.279.tar.gz
You can now run: /usr/local/bin/aws --version
```

確認。

```
(matsuki) matsuki@matsuki1 ~> aws --version
aws-cli/1.16.279 Python/3.7.5 Darwin/18.7.0 botocore/1.13.15
```

venv 抜けて再確認。

```
(matsuki) matsuki@matsuki1 ~> exit

matsuki@matsuki1 ~> aws --version
aws-cli/1.16.279 Python/3.7.5 Darwin/18.7.0 botocore/1.13.15
```

awscli 使えるか確認。適当に。

```
$ aws s3 ls
```

# 結論
pipenv 便利。