Edited at

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 -OL 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をインストールする場合

--with-ensurepipでpipをインストールする。

$ cd Python-2.7.10

$ sudo ./configure --enable-unicode=ucs4 --prefix=/usr/local --with-ensurepip
$ sudo make
$ sudo make altinstall


警告 make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。



pipのインストール

$ curl -OL 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


Dockerfile

From centos:7

# parameters
ARG PY_VER='3.7.1'

# python
WORKDIR /src
RUN curl -L https://www.python.org/ftp/python/${PY_VER}/Python-${PY_VER}.tgz -o /src/Python-${PY_VER}.tgz
RUN tar zxfv Python-${PY_VER}.tgz

RUN yum -y install make 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

WORKDIR /src/Python-${PY_VER}
RUN ./configure --enable-unicode=ucs4 --prefix=/usr/local --enable-optimizations
RUN make && make altinstall

RUN ln -s /usr/local/bin/python3 /usr/local/bin/python

# pip
RUN curl -L https://bootstrap.pypa.io/get-pip.py -o /src/get-pip.py
WORKDIR /src
RUN python get-pip.py


参考