CentOSにPython環境を作ってみたまとめ

概要

PythonをCentOS6.7にインストールしようと思ったところ、仮想環境やらパッケージ管理やらについての情報が散らばっていてどうすればいいか最初まったく分かりませんでした。 単純にPythonをインストールしようと思っただけなのに、virtualenvで仮想環境を作るといいとか、pyenvだとかpipやらsetuptoolsなど、関係がよく分からない用語が多すぎです。 自分なりに調べてみて、pyenvとvirtualenvを使ったPythonの基本的な環境を構築できたので情報をまとめてみます。

注意点

自分にとって初のPython環境構築なので、詳細を理解するよりも全体像の把握を優先しています。 かなり粗のある内容になっているので、おいおい修正していきます。

パッケージ管理の用語整理

用語について非常に分かりやすいサイトがあったので、そこを参考に簡潔にまとめました。 (参考サイト:Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

よく使う用語

  • setuptools -> インストールするとeasy_installコマンドを使えるようになる。Python 2.7.11だと最初から入っていた
  • easy_install -> setuptoolsの一部でありパッケージをインストールできるコマンド。pipのインストールに使う
  • pip -> easy_installの強化版ツール兼コマンド
  • PyPI -> パッケージ登録サイト。pipコマンドではここからインストールする

easy_installとpipの使い分けが分かりませんが、パッケージのインストールには大体pipを使うようです。

気に留めておく用語

  • distribute -> setuptoolsのクローンで、今はsetuptoolsにマージされてるらしいのでそんなに気にしなくていい
  • distutils -> setuptoolsの方が高機能版なのでそんなに気にしなくていい

仮想環境の用語整理

  • pyenv -> 複数のバージョンのPythonを使い分けるためのツール
  • shims -> pyenvに含まれるディレクトリ名。よく見かけるので重要な部分のはず
  • virtualenv -> 複数Python環境を使い分けるためのツール

自分の理解だと、pyenvでPythonのバージョンを管理して、環境ごとに異なるパッケージを入れたりするのをvirtualenvで管理するのだと思います。 pyenvのshimsディレクトリについても正しく理解すべきですが今は保留します。

pyenvのインストール

インストール方法をまとめたサイトをいくつか見ましたが、全てのユーザがpyenvを使えるように、~/.bashrcではなく/etc/profile.d/でshimsのパスを通すものを調べました。 サーバとして公開するときに、こうした方がユーザごとの差がなくて楽そうだと考えました。 コマンドはほとんど以下サイトを参考にしています。

(参考サイト:CentOSにpyenvをインストールする方法 - TASK NOTES

yum install -y gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel bzip2 sqlite git
cd /usr/local/src/
git clone https://github.com/yyuu/pyenv.git
echo 'export PYENV_ROOT="/usr/local/src/pyenv"' >> /etc/profile.d/pyenv.sh
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /etc/profile.d/pyenv.sh
echo 'eval "$(pyenv init -)"' >> /etc/profile.d/pyenv.sh
exec $SHELL -l
pyenv --version

virtualenvのインストール

pyenvと連携したvirtualenvをインストールするにはpluginsディレクトリにソースをダウンロードすればいいようです。

cd /usr/local/src/pyenv/plugins/
git clone https://github.com/yyuu/pyenv-virtualenv.git

特定のディレクトリを仮想環境にする

自分のMacと同じPython2.7.11をglobal設定し、更にdevという仮想環境を作り指定したディレクトリに反映しました。

pyenv install 2.7.11
pyenv global 2.7.11
cd 仮想環境にするディレクトリ
pyenv virtualenv 2.7.11 dev
pyenv local dev

まとめ

かなり大雑把ですが、よく見かける用語で理解しておきたいことはざっくり分かってきたように感じます。 一つ一つの用語について理解と平行して、次はPythonでのサーバ構築について調べてみます。