ユーザ用ツール

サイト用ツール


development:language:python:pyenv:centos

CentOS

このページについて

インストール記録

  • OS:CentOS7
  • shell:bash
  • 各自のhomeディレクトリにインストールするものとした

pyenvは複数のpythonバージョンを保持できる。

pyenv-virtualenvは同一バージョンのpythonでライブラリなどを別に保持できる1)

事前準備

$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git

インストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

設定

# (末尾に入力)

.bashrc
# for pyenv
if [ -e "${HOME}/.pyenv/bin/pyenv" ]; then
  echo '>> Exist pyenv'
  export PYENV_ROOT="${HOME}/.pyenv"
  export PATH=${PYENV_ROOT}/bin:$PATH
  eval "$(pyenv init -)"
  eval "$(pyenv virtualenv-init -)"
else
  echo '>> NO INSTALL pyenv'
fi

設定のリロード

# source $HOME/.bashrc

python環境の構築

インストール可能なpythonのリスト

# pyenv install --list

python2.7.15をインストール2)

# pyenv install 2.7.15

python3.7.2をインストール3)

# pyenv install 3.7.2

まだ、pyenv内に準備されているだけで、systemのpythonが使われています

$ pyenv versions
* system (set by ~/.pyenv/version)
  2.7.15
  3.7.2

環境ごとにディレクトリを作成(local)

# mkdir ~/tmp/python
# cd ~/tmp/python

python環境の構築

# pyenv local 2.7.15

確認

# pyenv local      # <= このディレクトリに設定されたpythonの表示
2.7.15
# pyenv versions   # <= インストール済みのpythonの表示((*で現在のものを指している))
  system
* 2.7.15 (set by /home/xxxxxx/.pyenv/version)
  3.6.3
# python -V
Python 2.7.15
# cd ~
# python -V
Python 3.7.2

同じpythonバージョンで、別環境の構築

モジュールも別になります

# pyenv virtualenv 3.6.3 Flask-3.6.3
                   ↑バージョン ↑環境名

環境ごとにディレクトリを作成(local)

# mkdir ~/tmp/python-flask
# cd ~/tmp/python-flask

python環境の構築

# pyenv local Flask-3.6.3

確認

# pyenv local
Flask-3.6.3
# pyenv versions
  2.7.14
  3.6.3
* Flask-3.6.3 (set by /root/tmp/python-flask/.python-version)
# python -V
Python 3.6.3

環境の保存と再構築

pipでインストールしたモジュールの情報を保存

$ pip freeze > requirements.txt

保存した環境を使って同じものをインストール

$ pip install -r requirements.txt
$ pip freeze

コマンド

globalコマンドで切り替え

# pyenv global 3.6.3
# pyenv versions
  2.7.14
* 3.6.3 (set by /root/.pyenv/version)

localコマンドで切り替え

pyenv versions で表示されているパスが違うことに注意

# cd targetpath
# pyenv local 2.7.14
# pyenv versions  
* 2.7.14 (set by /targetpath/.python-version)
  3.6.3
# cd ~
# pyenv versions
  2.7.14
* 3.6.3 (set by /root/.pyenv/version)

インストール済リスト

# pyenv versions

virtualenv環境の作成

# pyenv virtualenv 3.6.3 my-env-3.6.3

virtualenv環境のリスト

# pyenv virtualenvs

virtualenvの有効化

# pyenv activate my-virtual-env-3.4.0

インストールした環境の削除

# pyenv uninstall my-virtual-env-3.4.0

Pyenvのupdate

# git clone git://github.com/yyuu/pyenv-update.git ~/.pyenv/plugins/pyenv-update
# pyenv update

障害

installコマンドがないと言われる

$ pyenv install --list
pyenv: no such command `install'

こんなエラーが出て動かない

以下のコマンドで治った4)

$ sudo ./.pyenv/plugins/python-build/install.sh

3.7系のインストールに失敗する

$ pyenv install 3.7.2
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...

BUILD FAILED (CentOS Linux 7 using python-build 20180424)

Inspect or clean up the working tree at /tmp/python-build.20190117132709.32698
Results logged to /tmp/python-build.20190117132709.32698.log

Last 10 log lines:
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/main_parser.py", line 12, in <module>
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/__init__.py", line 6, in <module>
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/completion.py", line 6, in <module>
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/base_command.py", line 18, in <module>
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/download.py", line 38, in <module>
  File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in <module>
  File "/tmp/python-build.20190117132709.32698/Python-3.7.2/Lib/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
make: *** [install] エラー 1

以下のパッケージをインストールすることで解消

# sudo yum install libffi-devel
1)
virtualenvと混同されることが多いので注意
2) , 3)
数分かかります
4)
.pyenv/を削除してinstallし直して治るケースもある模様
development/language/python/pyenv/centos.txt · 最終更新: 2019/01/17 06:59 by hayashi