python(pyenv + pyenv-virtualenv) + CentOS7インストールメモ

環境

  • CentOS 7.1

依存関係インストール

$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install readline-devel zlib-devel bzip2-devel sqlite-devel openssl-devel \
    libXext.x86_64 libSM.x86_64 libXrender.x86_64 gcc gcc-c++ libffi-devel python-devel bzip2

下記のみでもOK。

$ sudo yum -y install zlib tk-devel tcl-devel ncurses-devel gdbm-devel db4-devel readline-devel zlib-devel \
  bzip2-devel sqlite-devel openssl-devel libXext.x86_64 libSM.x86_64 libXrender.x86_64 gcc gcc-c++ libffi-devel python-devel patch bzip2

matplotlib使うなら下記も先にインストール

あとから入れるとpythonをリビルドしないといけないみたい。

$ sudo yum install -y tk.x86_64 tk-devel.x86_64 tkinter.x86_64

pyenv install

$ pyenv_install() {
  # skip installation when pyenv is already installed.
  if [ `pyenv --version > /dev/null 2>&1; echo $?` == 0 ]; then
    echo '.pyenv is already installed.(skipping...)'
    return
  fi

  # pyenv
  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;

  # pyenv-virtualenv
  git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv;
  echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile;

  source ~/.bash_profile;
}

$ pyenv_install

pythonインストール

インストール可能なもの一覧

$ pyenv install --list

python2系

$ pyenv install 2.7.12
$ pyenv global 2.7.12

anaconda2系

$ pyenv install anaconda2-4.1.0
$ pyenv global anaconda2-4.1.0

python3系

$ pyenv install 3.5.2
$ pyenv global 3.5.2

anaconda3系

$ pyenv install anaconda3-4.1.0
$ pyenv global anaconda3-4.1.0

インストールされているバージョン確認

$ pyenv versions

pyenv-virtualenv

前述のpyenv_install関数に組み込み済だが、pyenv-virtualenvを使って、アプリケーションごとに管理するpipを分ける場合は、下記を実行

# pyenv-virtualenv
git clone https://github.com/yyuu/pyenv-virtualenv.git  ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

下記コマンドで、アプリケーション別のenvを生成

$ pyenv virtualenv 3.5.2 application-name

インストールされたか確認

$ pyenv versions

  system
* 3.5.2
  3.5.2/envs/application-name
  application-name

切り替え

$ pyenv local 3.5.2/envs/application-name

pythonをソースからビルドする場合

pythonのダウンロード

こちらからダウンロード
https://www.python.org/downloads/

例)Python-2.7.10をインストールする場合

$ curl -O https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
$ tar zxfv Python-2.7.10.tgz

インストール

/usr/local/bin/にpythonをインストールする場合

$ cd Python-2.7.10
$ sudo ./configure --enable-unicode=ucs4 --prefix=/usr/local
$ sudo make
$ sudo make install

pipのインストール

$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

pipのインストール先を変更する場合

デフォルトだとroot権限が必要だが、ユーザー権限でpipを実行したい場合は、インストール先を、ユーザー権限で操作できる場所に変更する必要がある。

$ mkdir -p ~/local/lib/python/site-packages/
$ echo 'export PYTHONPATH=$HOME/local/lib/python/site-packages:$PYTHONPATH' >> ~/.bash_profile

pip installをする際には、 --install-option でパスを指定する。

$ pip install --install-option="--prefix=$HOME/local" awscli

参考:pipのインストール先を指定する

その他便利ライブラリ

pp

import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(alarms)

[参考] 【Python 2.7】日本語を要素に含むオブジェクトの標準出力は、print( pp ( オブジェクト ) ) 書式で、日本語文字列として出力可能

inspect

オブジェクトのアトリビュート一覧を名前と中身をペアにして返す関数

import inspect
print(inspect.getmembers(alarms))

[参考]
- Pythonアプリケーション毎に環境を分ける (pyenv + virtualenv (or venv) + pip)
- Python Tips:オブジェクトのメソッドを調べたい
- matplotlibが描画されない

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.