LoginSignup
13
3

More than 1 year has passed since last update.

【AWS】素の Cloud9 に Python 3.9 をインストールする

Posted at

結果何とかなりましたが時間を吸われたので、
備忘録として残します。

1. やりたいこと

  • AWS Cloud9
    • Python 3.7.10 (既定のバージョン※) を 3.9.0 にアップデートする
      ※ 2021 年 11 月 24 日 現在

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 コマンドへパスを通します。

~/.bashrc
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 に以下を記載することで解決しました。

~/.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. 参考サイト

ありがとうございました。

13
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
3