普段思ったことや、雑記。

Menu & Search

【pyenv+virtualenv】CentOS7.1とCentOS6.6にPythonの開発環境をセットアップする

2015年10月6日

色々あってPythonが必要になったので、セットアップのメモ。個人で管理しているサーバをそろそろCentOS6.6からCentOS7へ変えていきたいので、ちょうど良い機会と思い、CentOS6.6とCentOS7.1の両環境でのPythonの開発環境のセットアップを試してみた。なお、この記事はセットアップに関するもので、使い方については他を参照することとしたい。

 

pyenvのインストール

まずは、下記のソフトウェアをインストールする。

yyuu/pyenv

https://github.com/yyuu/pyenv

これは何をするものかというと、マシンに同時に複数の異なるバージョンのPythonをインストールし、使えるようにするものだ。バージョンマネージャと呼ばれる分類のソフトウェアだ。というわけでインストールをしてみる。基本的には、上記のGithubにあるやり方で進める。さくっとターミナルで打つコマンドの手順を書いていく。

CentOS7.1の場合

$ sudo yum install -y bzip2-devel patch 
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv -v
pyenv 20150913-14-gd462e15

CentOS6.6の場合

$ sudo yum install -y git
$ sudo yum install -y bzip2-devel readline-devel openssl-devel sqlite-devel patch
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv -v
pyenv 20150913-14-gd462e15

最終行の、

$ pyenv -v

でpyenvのバージョン情報が表示されれば、pyenvは正しくインストールされている。これができていないと次に進めない。

さて、こうしてみるとCentOS7.1のほうが管理者権限にてインストールするパッケージ自体が少なくてスッキリしている感じがする。まあ、実際にこうしてやりたいことを異なるOSバージョンで打ってみると違いが分かるというもの。注意としては、CentOS6.6では初期状態では、意外と入っていそうでgitがインストールされていないので、それは強調しておく。ちなみに、CentOS7.1とCentOS6.6で、ともにpatchというパッケージをインストールしたが、これは別に新しいバージョンのPythonだけを使いたい場合は不要である(Python 3.5.0では不要であった)。確認したところ、Python 2.7.10のインストールではpatchのパッケージがない場合はエラーが出てインストールができないことが確認できている。

 

【オマケ】pyenv設定の別なやり方

pyenvの開発者の方が、システムレベルでソフトウェアをインストールしなくても依存関係をクリアしてPythonをインストールできる、それはとても便利なスクリプトを公開している。それがこちら。

yyuu/pyenv-installer

https://github.com/yyuu/pyenv-installer

オマケなので、依存関係のためのパッケージが多いCentOS6.6で試してみた。pyenvがインストールされるまで、わずかこれだけである(エディタの記入内容で行数が増えているように見えるが、実際は少ない)。

$ sudo yum install -y git patch
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
$ vi ~/.bash_profile
## 下記を記述 ##
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
$ source ~/.bash_profile
$ pyenv -v
pyenv 20150913-14-gd462e15

システムレベルでなく、依存関係をクリアするって何やっているんだろう?と思い、スクリプトの中身を覗いてみた。何やら開発者が作成したpyenv向けのプラグインをいくつか同時にセットアップしている様子しか見られなかった。そうすることで依存関係をクリアしているのだろうか?このあたりはもっとちゃんとみないといけないので、興味のある方はスクリプトの中身を見てみると良いと思う。あとは、通常通りの依存関係をクリアしてセットアップしたpyenvとの動作の違いについては、pyenv-installerのやり方では、通常の依存関係を解消した場合よりも少しターミナルのコマンド入力直後の応答速度が落ちた気がする。なので、通常のインストールができるのであれば、通常通りシステムレベルで依存関係を解消するほうが良いかもしれない。ちなみに、こちらのインストールスクリプトは、Githubのスター数が2015年10月6日時点だと、173で、pyenvの3151と比べるとだいぶ少ないので、さほど労力でもないし、あまり選ぶ意味はないかもしれない。どちらかというと、サーバ操作がよく分からない人向けで、さっさとPythonを使えさえすれば良いという場合はおそらくは用途としてハマるやり方だ。あとは考えられるとしたら、管理者権限に制約がある環境で、gitがインストールされている場合とか。

 

virtualenvをインストールする

次に開発ごとにpythonにインストールされているパッケージ環境自体を切り替えるために、virtualenvをインストールする。

Virtualenv — virtualenv 13.1.2 documentation

https://virtualenv.pypa.io/en/latest/index.html

こちらは、OS別でコマンドは異なることはない。以下にコマンドを示す。

$ pyenv install 3.5.0
$ pyenv global 3.5.0
$ python -V
Python 3.5.0
$ pip install virtualenv
$ virtualenv --version
13.1.2

virtualenvをインストールするには、pyenvにて、何かしらのバージョンのPythonをインストールし、global(対象ユーザのシステム全体)に設定しておく必要がある。ここでは、3.5.0をインストールし、globalに設定した。もし、他のバージョンをインストールしたい場合は

$ pyenv install  --list

と入力して、pyenvがインストール可能なPythonバージョンを表示して、

$ pyenv install (任意のバージョン)

とすればよい。

 

感想

Pythonのセットアップというより、Vagrantの環境に感動した(Vagrantで構築して手順をおこしてた)。作っては壊す、はなかなかにこういったチュートリアル作成には便利だ。あとは、pyenvは俗言うなんとかenv系のソフトウェアだ。今回、pyenvを調べている時に、anyenvという、Python,Ruby,Node.js,Go…など多彩な言語に対応したバージョンマネージャを発見したので、ちょっと試してみたいなあと思った。最近は、Node.js,Perl,Python,Rubyあたりがなんらかの機会で使うタイミングがあるので、ハマれば面白いかもしれない。

mmiyauchi

プログラムを書きながらTranceを聴くのが良いですね。みなさんも聴いたほうがいいですよ、Trance。EDMよりハードトランスでしょ。

Related article

AWSのLightsailのWordPress(BitNami)へ移行する際の要点まとめ

BitNami(AW…

クロスプラットフォームでプロセスを殺せるツールのfkill-cliが便利すぎる

クロスプラットフォームでプロセスを殺せるツールのfkill-cliが便利すぎる

MacでOffice…

ドメイン更新料金が安くて、仮想通貨がもらえるレジストラ「Uniregistry」が良い

ドメイン更新料金が安くて、仮想通貨がもらえるレジストラ「Uniregistry」が良い

Whois情報のプラ…

Discussion about this post

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Type your search keyword, and press enter to search