LoginSignup
8
2

More than 1 year has passed since last update.

【CentOS 7 / pyenv】サーバー環境のPythonバージョンアップデート

Last updated at Posted at 2022-09-08

はじめに

サーバー環境の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のバージョンアップをする。

  1. 現在のpyenvバージョン確認
  2. pyenvの該当ディレクトリの確認
  3. pyenvのgitをpull
  4. 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

8
2
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
8
2