====== pyenv + pyenv-virtualenv ======
===== このページについて =====
インストール記録
  * OS:FreeBSD
  * shell:tcsh
pyenvは複数のpythonバージョンを保持できる。\\
pyenv-virtualenvは同一バージョンのpythonでライブラリなどを別に保持できる((virtualenvと混同されることが多いので注意))
===== 事前準備 =====
依存するパッケージを事前に入れておきます
  # pkg install git bash sqlite3
===== インストール =====
  # git clone https://github.com/yyuu/pyenv.git ~/.pyenv
  # git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
===== 設定 =====
# (末尾に入力)
homeにインストール
# Setting for pyenv
# *****************
if ( -e $HOME/.pyenv/bin/pyenv ) then
        echo '>> Exist pyenv'
        # pyenvのルートパスを設定
        setenv PYENV_ROOT $HOME/.pyenv
        # pyenvのディレクトリをPATHに追加
        setenv PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
        # デフォルトテンポラリディレクトリを~/tmpに変更
        setenv TMPDIR $HOME/tmp
        # pyenvの再起動
        pyenv rehash
else
        echo '>> NO INSTALL pyenv'
endif
/usr/binにインストール
# for pyenv
export PYENV_ROOT="/usr/bin/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
  export PATH=${PYENV_ROOT}/bin:$PATH
  eval "$(pyenv init --path)"
fi
変更((2021.12.13確認:pyenv init部分が変更されていますので注意))
  eval "$(pyenv init -)"
   ↓
  eval "$(pyenv init --path)"
設定のリロード
  # source $HOME/.cshrc
または
  # source $HOME/.bashrc
※ PATHが書き換えられてpyenvのpythonが生きるため、この段階ではpythonが動かなくなってるので注意
===== python環境の構築 =====
インストールリスト
  # pyenv install --list
python2.7.14をインストール((数分かかります))
  # pyenv install 2.7.14
python3.6.3をインストール((数分かかります))
  # pyenv install 3.6.3
まだ、pyenv内に準備されているだけ
  # python -V
  pyenv: python: command not found
  
  The `python' command exists in these Python versions:
    2.7.14
    3.6.3
環境ごとにディレクトリを作成(local)
  # mkdir ~/tmp/python
  # cd ~/tmp/python
python環境の構築
  # pyenv local 2.7.14
確認
  # pyenv local
  2.7.14
  # pyenv versions
  * 2.7.14 (set by /root/pyenvtest/.python-version)
    3.6.3
  # python -V
  Python 2.7.14
===== 同じ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
  
===== 環境の保存と再構築 =====
==== wheelをインストール ====
  $ pyenv exec pip install wheel
==== pipでインストールしたモジュールの情報を保存 ====
  $ pyenv exec pip freeze > pyp_list.txt
  $ pyenv exec pip wheel --wheel-dir=~/tmp/wheelhouse -r pyp_list.txt
==== 保存した環境を使って同じものをインストール ====
  $ pyenv virtualenv 3.6.4 test-364
  $ pyenv global test-364
  $ pip install -r pyp_list.txt --use-wheel --no-index --find-links=tmp/wheelhouse
  $ 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
===== 参考 =====
[[https://qiita.com/Kodaira_/items/feadfef9add468e3a85b#wheel%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6pip%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E4%BF%9D%E5%AD%98|pyenv と pyenv-virtualenv で環境構築]]
[[http://tdoc.info/blog/2014/01/15/pip.html|pipの使い方 (2014/1バージョン)]]