はじめに
pythonを使用して構築する際に、バージョンの変更方法によって違いが発生し、詰まってしまったため、まとめておくことにしました。
AmazonLinux2を使用してpython3.9.2の適用を検証していきます。
デフォルトではpythonコマンドでは2.7.18、python3コマンドでは3.7.10が呼び出されます。
適用パターンは以下の3パターンです。
1.wgetを使用してインストール、aliasで適用
2.wgetを使用してインストール、シンボリックリンクの変更で適用
3.gitを使用してインストール、pyenvで適用
インストール方法(1,2共通)
python3.9.2のインストール
インストールに必要なツールをインストールします。
$ sudo yum groupinstall "development tools"
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
python3.9.2をインストールしていきます。
$ wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz
$ tar xJf Python-3.9.2.tar.xz
$ cd Python-3.9.2
$ ./configure
$ make
$ sudo make install
$ python -V
Python 2.7.18
$ python3 -V
Python 3.9.2
ここまででインストールまで完了したので、pythonコマンドにも適用させていきます。
1.aliasで適用
aliasコマンドを使用する方法と~/.bashrcに書き込む方法の2パターンあります。
どちらもpython3がpythonコマンドになりかわっているイメージです。
$ alias python='python3'
$ python -V
Python 3.9.2
$ python3 -V
Python 3.9.2
$ echo "alias python='python3'" >> ~/.bashrc
$ source ~/.bashrc
$ python -V
Python 3.9.2
$ python3 -V
Python 3.9.2
2.シンボリックリンクの変更で適用
現在のパスを確認してみましょう。
$ which python
/usr/bin/python
$ which python3
/usr/local/bin/python3
このパスはそれぞれのバージョンがある場所へのシンボリックリンクになっています。
pythonコマンドのパスを適用したいバージョンへのシンボリックリンクに変更させます。
$ sudo rm /usr/bin/python
$ sudo ln -s /usr/local/bin/python3.9 /usr/bin/python
$ python -V
Python 3.9.2
$ python3 -V
Python 3.9.2
3.gitを使用してインストール、pyenvで適用
インストールに必要なツールをインストールします。(ここまでは1,2と共通です。)
$ sudo yum groupinstall "development tools"
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
gitから使いたいバージョンをcloneします。
gitコマンドが使用できない場合は、yumでインストールしてください。
下記作業は不要なので飛ばしてください。
$ git clone https://github.com/deadsnakes/python3.9.git
pyenvを使用してバージョンを切り替えるため、pyenvをインストールし、使用できるように設定していきます。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv --version
pyenv 2.3.1-20-g572a8bcf
pyenvのバージョンが表示されたら、使用可能です。
pyenvコマンドを使用して使いたいバージョンをインストールしていきます。
インストール可能なバージョンはpyenv -list
で確認できます。
$ pyenv install 3.9.2
次のコマンドで切り替え可能なバージョンを確認できます。
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
3.9.2
*がついたバージョンが適用中のバージョンです。
3.9.2が使用できるように変更します。
$ pyenv global 3.9.2
$ pyenv versions
system
* 3.9.2 (set by /home/ec2-user/.pyenv/version)
$ python -V
Python 3.9.2
$ python3 -V
Python 3.9.2
まとめ
pyenvはpythonのバージョン管理を行います。
複数のバージョンを切り替えながら使用するときはpyenvを使うとよいでしょう。
aliasコマンドを使用する方法は手軽ですが、インスタンスの再起動などで消える可能性があるので、注意が必要です。
個人的にはpyenvで適用していけば間違いないのかなと思いました。