Help us understand the problem. What is going on with this article?

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 便利。

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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