@No_name451

Почему pyenv не активирует среду с новым интерпритатором python (Ubuntu 20.04.3 LTS)?

До установки docker и docker-compose на машину команда по проверке версии питона 3 похоже работала через алиас:
python -V -> Python 3.8.10

После установки алиас перестал работать, теперь команда выглядит так:
python -V -> Команда «python» не найдена...
python3 -V -> Python 3.8.10


Теперь поставил pyenv, установил Python==3.7.7.
Прописал настройки для .bashrc:
# ---PYENV---
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


Создал виртуальное окружение с нужной версией Python==3.7.7:
pyenv virtualenv 3.7.7 env_project

Благодаря конфигу .bashrc при входе в директорию откуда создавалось окружение pyenv - оно автоматически подтягивается:
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$


Но тем не менее, активация python не происходит:
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ python -V -> Команда «python» не найдена...
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ python3 -V -> Python 3.8.10
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ pyenv which python -> /home/user-name/.pyenv/versions/env_project/bin/python
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ pyenv which python3 -> /home/user-name/.pyenv/versions/env_project/bin/python3


Чтобы нормально активировать окружение и оно реально работало приходится его активировать как на шиндоусе:
source "/home/user-name/.pyenv/versions/env_project/bin/activate"


И тогда команды выполняются верно:
python -V -> Python 3.7.7

Костыль, причем неприятный...

Но больше всего интересует, как подружить pyenv с VS CODE
Если в директории где было создано виртуальное окружение с другой версией питона запустить VS CODE и попросту выбрать интерпритатор питона (через UI), то оно как всегда псевдо-запустится:
pyenv shell env_project
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$


И опять попытка запуска Python нужной версии провалится (уже из консоли VS CODE):
pyenv shell env_project
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ python -V -> Команда «python» не найдена...
(env_project) user-name@user-pc:~/path1/path2/path3/3_7_7$ python3 -V -> Python 3.8.10


Приходится возвращаться к костылю выше...

Подскажите, что я делаю не так?
  • Вопрос задан
  • 877 просмотров
Решения вопроса 1
@No_name451 Автор вопроса
Нашел решение.
Как оказалось, нужно добавить дополнительную строку к кофигу .bashrc, которой нет в документации по инсталяции:
# ---PYENV---
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)" # <- Без нее почему-то не работало
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


До указания строчки:61be0224e228f064009353.png
После:
61be0231d1475787140982.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы