CentOS7にApache+Flask(+Anaconda)の環境を作る

Flask を使おうということで以前 mod_wsgi をインストールしたので、今回はいよいよ Flask 本体をインストールしていきたいと思います。

スポンサーリンク

流れ

  1. CentOS7 + Apache の状態でスタート
  2. Python 実行可能にする
    1. Apache のモジュール mod_wsgi をインストール
  3. Python のバージョンを 3 にする (←今回はここからやりたい)
    1. pyenv をインストール
    2. Anaconda3 をインストール
  4. Flask を導入する

Python 3 系をインストールする

CentOS7 には予め Python がインストールされていますが、手元にある環境のバージョンは 2.7.5 でした。2020 年辺りに完全に Python 3 系に移行する的な話らしいので、ここから始める場合 2 系を使うメリットがほとんどありません。

しかし、現在の環境を下手に汚すのは嫌なので、pyenv で両方のバージョンを切り替えられるようにしてから Flask を入れたいと思います。

pyenv の導入

まず、pyenv をインストールするためには依存パッケージをインストールする必要があります。pyenv を Git で取得したいので一緒にインストールしています。

その後、Git で pyenv を取得します。

.bash_profile に環境変数を追加し、設定を反映させます。

Anadonda3 の導入

インストールできる Python のバージョンを検索してみます。

さっきまでは Python の最新バージョン (3.6.2) をインストールするつもりでしたが、そこに我が友 Anaconda3 の文字を発見してしまい、急遽変更。

よく考えるとメモリ 1GB, SSD 30 GB の VPS に Anaconda3 入れる意味ないよな…と、コマンド打ってから思いました。

Python バージョンの切り替え

初っ端からエラー。/home/mktia/.python-version を開くと 2.7.5 という記述があったので消してみたら消えました。

pyenv でバージョンを切り替えられないときの対処法

パスが正しく通ってるか調べる

なぜか切り替えがうまくいかず。調べてみると、優先度が違うとかパスが違うとか…。とりあえず Python のパスを表示してみると、こんな感じでした。

(追記:パスは下のように .pyenv 下の Python を参照していれば良いので、これで合ってます。)

さっき書いた .bash_profile の二行目を修正して反映させます。

(追記:嘘。/root/.pyenv/bin/pyenv のパスが通っていないので、pyenv コマンドが使えなくなります。ちゃんとパスの通し方を学べよ俺)

ところが、これでもうまくいかず、次は global を local に変更してみます。

切り替え成功!しかし、このファイル内部では Python 3.6.2 を適用する一方、その外では 2.7.5 を適用することになっては意味がないのではないか?

global の Python バージョンを変えるにはどうすれば?

色々ググった結果、上の出力に原因がバッチシ載ってたことがわかりました。set by /home/mktia/.python-version が問題だったんですね。

最初のエラーもこのファイルが原因でしたが、そもそもこのファイルの存在自体が要らないらしいです。理由は、Python のバージョンを読み取るときの優先順位にあるようです。

local で設定 (/home/mktia/.python-version) > global で設定 (/root/.pyenv/version) となってるらしい…。.python-version を消したら、set by の参照先が変わりました。そもそも .python-version っていつできたんだ…。

Flask のインストール

pip が使えればコマンドを打つだけです。

思った以上に長くなりすぎて Flask を実際に動かすのはまた次回に。

(参考)

スポンサーリンク

コメント・質問する