====== CentOS ======
===== このページについて =====
インストール記録
* OS:CentOS7
* shell:bash
* 各自のhomeディレクトリにインストールするものとした
pyenvは複数のpythonバージョンを保持できる。\\
pyenv-virtualenvは同一バージョンのpythonでライブラリなどを別に保持できる((virtualenvと混同されることが多いので注意))
===== 事前準備 =====
$ 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
===== 設定 =====
# (末尾に入力)
# 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をインストール((数分かかります))
# pyenv install 2.7.15
python3.7.2をインストール((数分かかります))
# 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'
こんなエラーが出て動かない\\
以下のコマンドで治った((.pyenv/を削除してinstallし直して治るケースもある模様))
$ 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
File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/__init__.py", line 6, in
File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/completion.py", line 6, in
File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/base_command.py", line 18, in
File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/download.py", line 38, in
File "/tmp/tmp3gm99fpe/pip-18.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in
File "/tmp/python-build.20190117132709.32698/Python-3.7.2/Lib/ctypes/__init__.py", line 7, in
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
make: *** [install] エラー 1
以下のパッケージをインストールすることで解消
# sudo yum install libffi-devel