環境
- 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
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