Найти - Пользователи
Полная версия: [ Утилита PYENV ]: Команда pip3 list выводит в терминал список глобальных зависимостей вместо ожидаемых локальных зависимостей текущего активного виртуального окружения pyenv. Как это исправить ?
Начало » Центр помощи » [ Утилита PYENV ]: Команда pip3 list выводит в терминал список глобальных зависимостей вместо ожидаемых локальных зависимостей текущего активного виртуального окружения pyenv. Как это исправить ?
1
citizen404
Вех приветствую!

Вообщем вопрос в следующем. Пытаюсь разобраться с виртуальными окружениями Python. Использую для этого утилиту pyenv. Создал для теста каталог с именем “test”, а уже в нем три других каталога в именами “foo”, “bar” и “baz”. Для каждого вложенного каталога создал свое собственное виртуальное окружение по шаблону:
 pyenv virtualenv <intepreter version> <nameOfVirtualEv>

Затем для каждого каталога установил свое локальное окружение с помощью шаблона вида:
 pyenv local <nameOfVirtualEv>

Затем решил проверить список всех установленных пакетов для каждого виртуального окружения по отдельности с помощью команды
 pip3 list
и тут, вместо ожидаемого пустого списка мне вывалился список всех глобально установленных пакетов/зависимостей(!)
Далее я выполнил в терминале для каждого из четырех каталогов команду:
 which python
на что получил вывод:
 /usr/bin/python
Т.е. для родительского каталога “test” (что вполне ожидаемо, т.к. для него я не устанавливал локального окружения) и вложенных трех каталогов (а тут уже неожиданно).
Люди, подскажите пожалуйста, в чем может крыться причина такого поведения ?
Где и что мне поправить (какие файлы), чтобы при вызове из текущего виртуального окружения команды
 pip3 list
, в терминал отображались только те зависимости, которые присущи для активного виртуального окружения ?
Иными словами, как мне добиться поведения, когда при вызове команды
 which python
из каталога foo выводилось что-то вроде
 /home/neon/.pyenv/versions/fooVenv-3.7.4/bin/python
, а не
 /usr/bin/python
???

Интуитивно понимаю, что надо пошаманить где-то с путями в файлах типа .zshrc, .zshenv и им подобными, но в силу малого опыта и знаний не соображу в каком месте…

з.ы. ОС: Ubuntu 18.04; Оболочка для терминала: zsh
Прилагаю прикрепленный файл с логом сеанса работы в терминале для большей наглядности.
py.user.next
citizen404
Пытаюсь разобраться с виртуальными окружениями Python.
Очень просто разобратся. virtualenv теперь включена в третий питон в виде модуля.
https://docs.python.org/3/library/venv.html

python3 -m venv myenv
. myenv/bin/activate
deactivate
citizen404
py.user.next
Очень просто разобратся. virtualenv теперь включена в третий питон в виде модуля.
https://docs.python.org/3/library/venv.html

Я в курсе, но мне надо разобраться с утилитой pyenv. Хотя вопрос уже даже не в самой утилите как таковой, а в том, что я видимо неправильно проэкспортировал какие-то пути в файлах настроек терминала типа .zshenv / .zshrc или подобных. У меня проблема в том, что не изолируются виртуальные окружения. При создании нового виртуального окружения и вводе команды
 which python
из соответствующего каталога, для которого данное виртуальное окружение установлено как локальное, мне выводится путь до системного интерпретатора Python - /usr/bin/python и как следствие все установленные пакеты из этого окружения попадают в глобальное пространство имен (если можно так выразится), т.е. теряется весь изначальный смысл для чего были задуманы вирт. окружения.
Но так как я не сильно дружу с Linux, я не могу понять, где и что мне прописать, чтобы исправить это поведение.
Rodegast
А ты уверен что виртуальные окружения вообще нужны?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB