はじめに
Amazon Linux 2をはじめとし、大抵のLinuxディストリビューションは、パッケージマネージャ(yumやaptなど)の機能でPythonをインストールすることが可能になっています。
しかしながら、これらパッケージマネージャでインストールされるソフトウェアは安定性が重視され、最新のアップデートに追従しないことが殆どです。
まれにAWS CLIの最新版が必要になることがありますが、これはOSディストリビューションのパッケージ版では大体において追従されないため、pipでのインストールを行うことが殆どかと思います。
OSディストリビューションのpipを利用してPythonパッケージのインストール/アップデートを行うと、他の既存のアプリケーションに影響を与えてしまう可能性があります。
そこで、OSディストリビューション環境に影響を与えずに、pipによるPythonパッケージのインストールを自由に行えるようにするため、venvを利用してPython3環境を整備する手順をまとめます。
環境
- ディストリビューション:
- Amazon Linux release 2 (Karoo)
- cpe:2.3
amazon:amazon_linux:2
- venv環境名:
- my_venv
手順
Python3のインストール
まずは、Amazon Linux 2のパッケージマネージャであるyumを利用し、Python3をインストールします。
2019/12/16現在のPython3のバージョンは、3.7.4のようです。
### Python3インストール
$ sudo yum install python3
※途中省略
Dependencies Resolved
================================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================================
Installing:
python3 x86_64 3.7.4-1.amzn2.0.3 amzn2-core 71 k
Installing for dependencies:
python3-libs x86_64 3.7.4-1.amzn2.0.3 amzn2-core 9.0 M
python3-pip noarch 9.0.3-1.amzn2.0.1 amzn2-core 1.9 M
python3-setuptools noarch 38.4.0-3.amzn2.0.6 amzn2-core 617 k
Transaction Summary
================================================================================================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 12 M
Installed size: 50 M
Is this ok [y/d/N]: y
※途中省略
### 意図したバージョンがインストールされていることを確認
$ which python3
/usr/bin/python3
$ python3 --version
Python 3.7.4
my_venvという名称のvenv環境を作成
venvは専用のコマンドが用意されているわけではなく、Pythonのモジュールとして提供されます。そのため、Pythonの「-m」オプションを利用してvenvを実行します。
### my_venvという名称の環境を、ホームディレクトリ以下に作成
$ cd
$ python3 -m venv my_venv
$ ls ~/my_venv/
bin/ include/ lib/ lib64/ pyvenv.cfg
なお、venv環境への切り替えの際には、activateコマンドを利用します。これは「~/my_venv/bin/activate*」といったスクリプトで提供されます。
$ ls -l ~/my_venv/bin/activate*
-rw-r--r-- 1 vagrant vagrant 2203 Dec 15 15:30 /home/vagrant/my_venv/bin/activate
-rw-r--r-- 1 vagrant vagrant 1259 Dec 15 15:30 /home/vagrant/my_venv/bin/activate.csh
-rw-r--r-- 1 vagrant vagrant 2411 Dec 15 15:30 /home/vagrant/my_venv/bin/activate.fish
venv環境に切り替え
それでは先ほど作成したmy_venv環境に切り替えます。
切り替わったかどうかの確認には、whichを使うと便利です。
$ . ~/my_venv/bin/activate
(my_venv) $ python --version
Python 3.7.4
(my_venv) $ which python
~/my_venv/bin/python
AWS CLIのインストール
venv環境に切り替わった状態で、pip installを利用してAWS CLIをインストールします。
### 実行しているpipコマンドがvenv環境のものになっていること
(my_venv) $ which pip
~/my_venv/bin/pip
### AWS CLIのインストール・バージョンの確認
(my_venv) $ pip install awscli
Collecting awscli
※途中省略
Installing collected packages: PyYAML, docutils, six, python-dateutil, jmespath, urllib3, botocore, s3transfer, pyasn1, rsa, colorama, awscli
Running setup.py install for PyYAML ... done
Successfully installed PyYAML-5.1.2 awscli-1.16.303 botocore-1.13.39 colorama-0.4.1 docutils-0.15.2 jmespath-0.9.4 pyasn1-0.4.8 python-dateutil-2.8.0 rsa-3.4.2 s3transfer-0.2.1 six-1.13.0 urllib3-1.25.7
インストールが完了したら、AWS CLIのバージョンが最新のものであることを確認します。
### 念のためシェルを実行しなおす
(my_venv) $ exec bash
(my_venv) $
### AWS CLIコマンドのパスが、venv環境以下のものであることを確認する
(my_venv) $ which aws
~/my_venv/bin/aws
### AWS CLIの最新版がインストールされていることを確認する
(my_venv) $ aws --version
aws-cli/1.16.303 Python/3.7.4 Linux/4.14.104-95.84.amzn2.x86_64 botocore/1.13.39