連載第四回目です。
CentOS7にインストールされているPythonのバージョンが2.7なので、バージョンアップをします。
そうしないとPythonのアプリが動きません。
なぜなら、Python2と3はプログラムの記法が違います。そりゃ動かないですよね。。
今回はpyenvを使ってPythonのバージョンを上げます。
バージョンはNginx Unitで使われている3.6.8を利用します。
3.6.8以外にする場合は、Dockerコンテナ等別途準備が必要です。(参考ページ)
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
その他については上記ページをお読みください。
1. pyenvのインストール
まずは、Pythonのバージョンを確認します。
2.X.Xだと思います。
1 | python - V # python --version も可 |
※もし3.X.Xになっている場合は下記工程は不要です。
続いてgitをインストールします。
1 | sudo yum install git |
pyenvのインストールを実施します。
1 | curl https: / / pyenv.run | bash |
実は、ウラで下記のようなコマンドが実行されています。(公式サイトより)
gitをインストールすることで、このコマンドを有効にできます。
1 | curl - L https: / / github.com / pyenv / pyenv - installer / raw / master / bin / pyenv - installer | bash |
※上記のインストール後に、下記工程で入力すべき文字列(*1)が表示されるので参考にしてください。
続いて、シェルの起動時にpyenvを自動的に起動するようにしておきましょう。
ファイル~/.bashrcを下記コマンドで開いてください。
1 | vi ~ / .bashrc |
最後に、~/.bashrcの内容に次の文字列(*1)を追記(赤枠)します。
1 2 3 | export PATH = "/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" |
※PATHの/root/部位が環境によって異なる場合があります。ご注意ください。
※シェルを再起動させた時、WARNINGが出る場合は2行目をeval “$(pyenv init –path)”に変換してみてください。
(参考:pyenv(Github) issue #1906)
シェルを再起動させます。
上記の変更が反映され、pyenvが使えるようになります。
1 | exec $SHELL |
確認のため、pyenvのバージョンを表示してください。
問題なくインストールされていれば、下記コマンドでバージョンが表示されます。
1 | pyenv - - version |
2. Python3のインストール
まずは、Python3をインストールする前に、Python3に必要なモジュールをインストールします。
1 | sudo yum install zlib - devel libffi - devel openssl - devel |
続いて、インストールできるバージョンを確認します。
もしPython3.6.8以外を選ぶ場合はこちらの手順を参考にしてください。
1 | pyenv install - l |
それでは、指定されたバージョン(3.6.8)をインストールします。
1 | pyenv install 3.6 . 8 |
少し時間が掛かるので注意が必要です。フリーズしているわけではありません。
それでは、インストールされたかどうかを確認します。
今回指定したバージョンが出力されればOKです。
1 | pyenv versions |
3. Python3に切り替える
Python2から3に切り替えます。
まずは現在のバージョンを確認します。
何もしていなければ2.7.5から変わっていないはずです。
1 | python - V |
続いて、下記でPythonのバージョンをGlobal環境で切り替えます。
1 | pyenv global 3.6 . 8 |
※local(指定ディレクトリ以下)も可能です。
3.6.8に変わっているか確認します。
1 | python - V |
変わっていれば終了です!
おつかれさまでした。
追加でPIP(Pythonのパッケージ管理ソフト)をアップグレードをしておいてください。
1 | pip install - - upgrade pip |
アップグレードしておかないと、必要なモジュールをインストールできない時があります。
おわりに
今回の方法以外で、venvを使わずにPython2と3を同じ環境に入れて切り替える方法もありますが、かなり面倒だったので今回はこちらの方法を使いました。
もし、Pythonで使いたいバージョンやモジュールのバージョンの組み合わせが複数通りあると困りますよね?
Pythonのバージョンだけなら、指定ディレクトリでpyenv local 3.X.Xのコマンドを打てばいいのですが、それではモジュールのバージョンは管理しきれません。
そのために、次は各々のアプリ用のモジュールバージョン管理用にvenvを導入していきます。
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
次は、5. Python仮想環境venvの導入です。