インストール記録
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
# (末尾に入力)
# 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のリスト
# 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
モジュールも別になります
# 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 freeze > requirements.txt
$ pip install -r requirements.txt $ pip freeze
# pyenv global 3.6.3 # pyenv versions 2.7.14 * 3.6.3 (set by /root/.pyenv/version)
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
# pyenv virtualenv 3.6.3 my-env-3.6.3
# pyenv virtualenvs
# pyenv activate my-virtual-env-3.4.0
# pyenv uninstall my-virtual-env-3.4.0
# git clone git://github.com/yyuu/pyenv-update.git ~/.pyenv/plugins/pyenv-update # pyenv update
$ pyenv install --list pyenv: no such command `install'
こんなエラーが出て動かない
以下のコマンドで治った4)
$ sudo ./.pyenv/plugins/python-build/install.sh
$ 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