Python

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のインストール先を指定する

venv

venvのインストール

$ pip install virtualenv

samle-envというvenvを作成

virtualenvwrapperを使う場合はこの手順は飛ばしてこちらへ

# Python 3.5以前
$ virtualenv sample-env

# Python 3.6以降
$ python3 -m venv sample-env

以下にsample-env関連のファイルが作成される

$ ll ~/sample-env/
total 8
drwxr-xr-x  12 user  staff  384 Apr 30 13:50 bin
drwxr-xr-x   2 user  staff   64 Apr 30 13:50 include
drwxr-xr-x   3 user  staff   96 Apr 30 13:50 lib
-rw-r--r--   1 user  staff   75 Apr 30 13:50 pyvenv.cfg

activate 仮想環境の有効化

$ source sample-env/bin/activate
$ (sample-env) user@MacBook:~$

deactivateする

$ deactivate

Virtualenvwrapper

venvの管理を楽にしてくれるもの

Install

$ sudo pip install virtualenvwrapper

~/.bashrcなどに追記

インストールしただけでは使えないので、以下を設定する

/usr/bin/virtualenvwrapper.shかも

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi

env作成

--pythonで、使用するpythonを指定。python3を使うなら/usr/local/bin/python3など。

$ mkvirtualenv --python=/usr/local/bin/python sample-env

以下のコマンドで作成したenv一覧が見れる

$ workon
sample-env

activate

$ workon sample-env

deactivate

$ deactivate

env削除

$ rmvirtualenv sample-env

その他便利ライブラリ

pp

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

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

inspect

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

import inspect
print(inspect.getmembers(alarms))

pip.conf

pip.confを設置する場合、OSによって場所が異なる。

参考:https://pip.pypa.io/en/stable/user_guide/#configuration

OS path
MacOS $HOME/.pip/pip.conf
Unix $HOME/.pip/pip.conf
Windows %HOME%\pip\pip.ini
Unixでpyenv-virtualenvごとに設定する場合 ~/.pyenv/versions/[venv_name]/pip.conf
Macでpyenv-virtualenvごとに設定する場合 /usr/local/opt/pyenv/versions/[venv_name]/pip.conf
" virtualenv ~/.virtualenvs/[venv_name]/pip.conf

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