Force creating venv with same name doesn't update Python version
Vanav opened this issue · comments
If venv already exists for Python version A, and we are force creating venv with the same name for Python version B, then Python version for venv is not updated: venv symlink is not changed, but new symlink is created inside venv directory.
Bug fix:
ln -fs "${VIRTUALENV_PATH}" "${COMPAT_VIRTUALENV_PATH}"
→
ln -fsn "${VIRTUALENV_PATH}" "${COMPAT_VIRTUALENV_PATH}"
pyenv-virtualenv/bin/pyenv-virtualenv
Line 594 in fca1241
How to reproduce:
$ pyenv virtualenv --force 3.9.6 dev
$ ls -al /opt/pyenv-installer/pyenv/versions/3.9.6/envs/dev
drwxrwsr-x 6 deployer deployer 4096 Mar 30 12:09 .
drwxrwsr-x 3 deployer deployer 4096 Jul 5 2021 ..
drwxrwsr-x 3 deployer deployer 4096 Mar 15 11:01 bin
drwxrwsr-x 2 deployer deployer 4096 Jul 5 2021 include
drwxrwsr-x 3 deployer deployer 4096 Jul 5 2021 lib
lrwxrwxrwx 1 deployer deployer 3 Jul 5 2021 lib64 -> lib
-rw-rw-r-- 1 deployer deployer 106 Mar 30 11:02 pyvenv.cfg
drwxrwsr-x 3 deployer deployer 4096 Feb 17 12:46 share
$ pyenv virtualenvs | grep -i dev
3.9.6/envs/dev (created from /opt/pyenv-installer/pyenv/versions/3.9.6)
* dev (created from /opt/pyenv-installer/pyenv/versions/3.9.6)
$ pyenv virtualenv --force 3.9.7 dev
Command executed:
ln -fs /opt/pyenv-installer/pyenv/versions/3.9.7/envs/dev /opt/pyenv-installer/pyenv/versions/dev
$ pyenv virtualenvs | grep -i dev
3.9.6/envs/dev (created from /opt/pyenv-installer/pyenv/versions/3.9.6)
3.9.7/envs/dev (created from /opt/pyenv-installer/pyenv/versions/3.9.7)
* dev (created from /opt/pyenv-installer/pyenv/versions/3.9.6)
$ ls -al /opt/pyenv-installer/pyenv/versions/3.9.6/envs/dev
drwxrwsr-x 6 deployer deployer 4096 Mar 30 12:09 .
drwxrwsr-x 3 deployer deployer 4096 Jul 5 2021 ..
drwxrwsr-x 3 deployer deployer 4096 Mar 15 11:01 bin
drwxrwsr-x 2 deployer deployer 4096 Jul 5 2021 include
lrwxrwxrwx 1 root deployer 57 Mar 30 12:09 dev -> /opt/pyenv-installer/pyenv/versions/3.9.7/envs/dev
drwxrwsr-x 3 deployer deployer 4096 Jul 5 2021 lib
lrwxrwxrwx 1 deployer deployer 3 Jul 5 2021 lib64 -> lib
-rw-rw-r-- 1 deployer deployer 106 Mar 30 11:02 pyvenv.cfg
drwxrwsr-x 3 deployer deployer 4096 Feb 17 12:46 share
Notice new symlink in incorrect place.