LoginSignup
9
12

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-10-21

環境

  • 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

参考

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12