このページを参考にしながらpyenv/virtualenv環境をセットアップした。
git clone https://github.com/pyenv/pyenv.git ~/.local_pyenv
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.local_pyenv/plugins/pyenv-virtualenv
都合により~/.pyenvではなく~/.local_pyenvにchange install locationしている。.profileには当初以下のように書いていた。.profileはUbuntu20.04の場合。他適当なものに読み替えられるだろう。
if [ -d "$HOME/.local_pyenv" ]; then
PYENV_ROOT="$HOME/.local_pyenv"
PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
if [ -d "$PYENV_ROOT/plugins/python-virtualenv" ]; then
eval "$(pyenv virtualenv-init -)"
fi
fi
すると次のようにdefault locationに一部のファイルが作成されてしまった。
ls -a ~/
...
.pyenv
.local_pyenv
...
原因はページタイトルの通りである。PYENV_ROOTをエクスポートすればよい。
if [ -d "$HOME/.local_pyenv" ]; then
export PYENV_ROOT="$HOME/.local_pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
if [ -d "$PYENV_ROOT/plugins/python-virtualenv" ]; then
eval "$(pyenv virtualenv-init -)"
fi
fi
わかったこととして、PYENV_ROOTが読みだせないときにpyenvは自分が置かれている場所をPYENV_ROOTとみなすのではなく~/.pyenvだとみなすようだ。これは中身を見ていっているわけでは無いので注意。自分の置かれている場所をPYENV_ROOTとする、のを未定義時の挙動とするのではだめなんだろうか??と思った次第。
以上!