結果何とかなりましたが時間を吸われたので、
備忘録として残します。
1. やりたいこと
- AWS Cloud9
- Python
3.7.10
(既定のバージョン※) を3.9.0
にアップデートする
※ 2021 年 11 月 24 日 現在
- Python
2. 前提
- 環境
- 作成してそのままの Cloud9 (Amazon Linux 2)
3. 方法
Python バージョン 3.7.10
からスタートします。
$ python --version
Python 3.7.10
3.1. pyenv インストール
まず pyenv をインストールします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 確認
$ ~/.pyenv/bin/pyenv --version
pyenv 2.2.2-1-gf2925393
~/.bashrc
に以下を記載し、 pyenv コマンドへパスを通します。
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
変更を適用し、 pyenv コマンドが通ることを確認します。
$ source ~/.bashrc
# 確認
$ pyenv --version
pyenv 2.2.2-1-gf2925393
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
インストール可能な Python バージョンを表示してみます。
$ pyenv install --list | grep 3.9.0
3.9.0
上手くいきそうに見えますが、いざインストールすると警告が出てきます。
# インストールした場合、警告が出る
$ pyenv install 3.9.0
:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Installed Python-3.9.0 to /home/ec2-user/.pyenv/versions/3.9.0
bzip2 を確認してみると、既にインストールされています。
$ sudo yum list installed | grep bzip
bzip2.x86_64 1.0.6-13.amzn2.0.3 @amzn2-core
bzip2-libs.x86_64 1.0.6-13.amzn2.0.3 @amzn2-core
色々調べた結果、足りていないパッケージは bzip2-devel
でした。
3.2. bzip2-devel インストール
念のため yum 自体をアップデートしてからインストールします。
# 念のためアップデート
$ sudo yum -y update
# bzip2-devel をインストール
$ sudo yum -y install bzip2-devel
:
Installed:
bzip2-devel.x86_64 0:1.0.6-13.amzn2.0.3
Complete!
# 確認
$ sudo yum list installed | grep bzip
bzip2.x86_64 1.0.6-13.amzn2.0.3 @amzn2-core
bzip2-devel.x86_64 1.0.6-13.amzn2.0.3 @amzn2-core
bzip2-libs.x86_64 1.0.6-13.amzn2.0.3 @amzn2-core
入りました。
3.3. Python 3.9.0 インストール
満を持して Python 3.9.0 をインストールします。
$ pyenv install 3.9.0
Downloading Python-3.9.0.tar.xz...
-> https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
Installing Python-3.9.0...
Installed Python-3.9.0 to /home/ec2-user/.pyenv/versions/3.9.0
# 確認
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
3.9.0
警告が消えました。
3.4. Python 3.9.0 に切り替える
pyenv global
で Python バージョンを切り替えます。
$ pyenv global 3.9.0
# 確認
$ pyenv versions
system
* 3.9.0 (set by /home/ec2-user/.pyenv/version)
しかし、これだけでは Python バージョンは切り替わりません。
# 切り替わっていない
$ python --version
Python 3.7.10
$ which python
alias python='python3'
/usr/bin/python3
# 見つからない
$ which python3.9
/usr/bin/which: no python3.9 in (/home/ec2-user/.pyenv/bin:...(省略)
Cloud9 ではデフォルトで python コマンドの Alias 設定があるため、切り替わらないようです。
他の記事で見かけるように、 Alias 設定が ~/.bashrc
に見当たらず困っていたのですが、
~/.bash_profile
に以下を記載することで解決しました。
export PATH="$HOME/.pyenv/shims:$PATH"
変更を適用します。
$ source ~/.bash_profile
# 確認
$ python --version
Python 3.9.0
$ which python
alias python='python3'
~/.pyenv/shims/python3
# 見つかる!
$ which python3.9
~/.pyenv/shims/python3.9
無事 Python バージョンを 3.9.0
に切り替えることができました。
pip もアップデートします。
$ pip install --upgrade pip
:
Successfully uninstalled pip-20.2.3
Successfully installed pip-21.3.1
3.5. バージョン確認
$ python --version
Python 3.9.0
$ pyenv versions
system
* 3.9.0 (set by /home/ec2-user/.pyenv/version)
$ pip -V
pip 21.3.1 from /home/ec2-user/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pip (python 3.9)
いい感じになりました!
4. 参考サイト
ありがとうございました。