====== 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