はじめに
サーバー環境のPythonのバージョンをアップデートする時の流れをまとめました。
初心者向けにはなりますが、つまづいたところも書き留めているので、同じところで悩んでる方の助けになれば幸いです。
環境
- CentOS 7
- pyenv
Pythonのバージョン変更の流れ
1. 現在のPythonバージョンを確認
2. pyenvでインストール可能なPythonバージョンを確認
3. バージョンを指定してpythonをインストール
4. pyenv内のpythonのバージョン切り替え
5. 現在のpythonバージョンを確認
1. 現在のPythonバージョンを確認
現在サーバーで参照されているPythonのバージョンを確認します。
ユーザーごとにバージョンが異なる可能性があるので、pyenvがインストールされているユーザーでの確認をしてください。
python -V
ついでにpyenvにインストールされているPythonのバージョンも確認します。
現在のバージョンには*
がついています。
pyenv versions
2. pyenvでインストール可能なPythonバージョンを確認
pyenv install --list
pyenvはPython以外もインストールできます。
表示された一覧の上部にある、2.**.**
や3.**.**
がPythonのバージョンです。
インストールしたいバージョンがないとき→つまずいたところの解決方法へ
3. バージョンを指定してPythonをインストール
pyenv install 3.**.**
インストールしたいバージョンを選択してください。
Python3.10以上のインストールでOpenSSLエラーが出たとき→つまずいたところの解決方法へ
4. pyenv内のpythonのバージョン切り替え
再度、pyenvにインストールされているPythonのバージョンを確認すると、先ほどインストールしたバージョンが増えています。
pyenv versions
続けて、pyenv global
コマンドでインストールしたバージョンに切り替えます。
pyenv global 3.**.**
オプションにglobalとあるので、システム全体の設定が切り替わりそうに見えますが、実際は実行しているユーザの環境のみに影響を与えます。
([python]pyenvがバージョンを切り替える仕組みを理解するより引用)
もう一度pyenv --version
で確認すると、切り替えたバージョンに*
がついています。
5. 現在のPythonバージョンを確認
最後に、現在サーバーで参照されているPythonのバージョンを再度確認します。
python -V
以上で、サーバー環境のPythonバージョンのアップデートが完了です!
つまずいたところの解決方法まとめ
1. インストールしたいバージョンがないとき
解決方法
pyenvのバージョンアップをする。
- 現在のpyenvバージョン確認
- pyenvの該当ディレクトリの確認
- pyenvのgitをpull
- pyenvバージョンが上がったことを確認
- 現在のpyenvバージョン確認
# pyenv --version
- pyenvの該当ディレクトリの確認
pyenv which python-build
- pyenvのgitをpull
{}
内に上記のディレクトリの/plugins/python-build
より前のパスを入力してください。
cd /{**}/plugins/python-build/../.. && git pull && cd -
- pyenvバージョンが上がったことを確認
先ほど確認したバージョンから上がっていることがわかります!
# pyenv --version
再度、pyenv install --list
コマンドでインストール可能なPythonバージョンを確認すると、最新のバージョンまででてきました!
2. Python3.10以上のインストールでOpenSSLエラーが出たとき
解決方法
OpenSSL 1.1.1のインストール
Python3.10をインストールしようとしたところ、下記のエラー文が出ました。
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
python.jpによると、
これまで、Pythonでは OpenSSL のVersion 1.0.2以降が利用可能でしたが、Python 3.10からは、OpenSSL 1.1.1以降が必須となりました(PEP 644 Require OpenSSL 1.1.1 or newer)。
とのこと...。
エラー文下部の https://github.com/pyenv/pyenv/wiki/Common-build-problems には下記のコマンドがあったため、この通りに打ち、
- If you need OpenSSL 1.1:
コマンドsudo yum install openssl11-devel --allowerasing
無事にPython3.10をインストールできました!
参考
[python]pyenvがバージョンを切り替える仕組みを理解する
pyenvのバージョンをupdateする
pyenv のアップデート方法
Python 3.10の新機能(その8) OpenSSL 1.1.1が必須に
Common build problems