@citizen404

В чем разница между командами «pyenv local someEnvName» и «pyenv virtualenv activate someEnvName» ???

Народ, подскажите как правильно работать с виртуальными окружениями Python pyenv + pyenv-virtualenv ?
Я не могу понять до конца разницу между командами :
- pyenv local someEnvName
- pyenv global someEnvName

с одной стороны, и :
- pyenv activate someEnvName
с другой.
То есть, я вроде бы понимаю их назначение по отдельности, но нет целостной картины всего процесса администрирования виртуальных окружений...
Как я это понимаю:
pyenv local someEnvName - устанавливает виртуальное окружение с именем someEnvName для конкретной директории (???)

pyenv global someEnvName - устанавливает виртуальное окружение с именем someEnvName для всей операционной системы (???)

pyenv activate someEnvName - активирует/устанавливает виртуальное окружение с именем someEnvName для....Чего??? Конкретного каталога или...?

Для наглядности, приведу свою пошаговую последовательность действий.

ШАГ № 1. Создание каталога(папки) для нового проекта Python.
5d3059d348c54949952477.png
ШАГ № 2. Просмотр всех доступных версий интерпретатора Python, установленных с помощью утилиты pyenv
5d3059ee201a0552098334.png

ШАГ № 3. Создание нового виртуального окружения для проекта на базе выбранной версии интерпретатора.
5d305faec1ef9757890409.png

ШАГ № 4. Установка (активация) виртуального окружения
5d3060ba91228183047158.png
И вот тут у меня возникает дилемма, какую команду использовать pyenv local newPythonProjectEnv или pyenv activate newPythonProjectEnv ???

По итогу, меня смущает тот факт, что в терминале перед началом командной строки отображаются две пары круглых скобок. В одной - имя необходимого мне виртуального окружения, а в другой - имя виртуального окружения, установленного по-умолчанию для всей системы. НО, что важно, когда я ввожу команду pip3 list, в терминале отображаются ВСЕ загруженные пакеты на уровне всей системы, т.е. для виртуального окружения с именем base, хотя я ожидал увидеть пустой список для newPythonProjectEnv.

Что я делаю не так ? Помогите разобраться.

Если можно, опишите правильный пошаговый алгоритм действий при работе с виртуальными окружениями Python.

з.ы. И еще такой вопрос, почему когда я ввожу в терминал команду pyton --version
мне выводится:
5d305aef82505842363617.png
, а когда ввожу pyton3 --version выводится:
5d305ae2a9293923417792.png
хотя ни та, ни другая версия интерпретатора не значится в списке, который выводится на экран после команды pyenv versions:
5d305b072b84a201411687.png

з.ы.ы. Не судите строго, я только учусь. На всякий случай ниже приведу весь лог моих действий в терминале. Буду рад любой конструктивной критике, совету, полезной ссылке.
ЛОГ ТЕРМИНАЛА
(base) ➜ Видеокурс python --version
Python 2.7.15+
(base) ➜ Видеокурс python3 --version
Python 3.6.8
(base) ➜ Видеокурс pyenv local
pyenv: no local version configured for this directory
(base) ➜ Видеокурс pyenv global
3.7.3
(base) ➜ Видеокурс pyenv versions
system
2.7.16
2.7.16/envs/myNewVenv-2.7.16
3.4.4
* 3.7.3 (set by /home/neon/.pyenv/version)
3.7.3/envs/myNewVenv-3.7.3
3.7.3/envs/webscraping-3.7.3
anaconda3-2019.03
anaconda3-2019.03/envs/headfirst
anaconda3-2019.03/envs/marklutc-books
anaconda3-2019.03/envs/python-spec-lvl1
anaconda3-2019.03/envs/tceh-course
myNewVenv-2.7.16
myNewVenv-3.7.3
webscraping-3.7.3
(base) ➜ Видеокурс pyenv virtualenvs
2.7.16/envs/myNewVenv-2.7.16 (created from /home/neon/.pyenv/versions/2.7.16)
3.7.3/envs/myNewVenv-3.7.3 (created from /home/neon/.pyenv/versions/3.7.3)
3.7.3/envs/webscraping-3.7.3 (created from /home/neon/.pyenv/versions/3.7.3)
anaconda3-2019.03 (created from /home/neon/.pyenv/versions/anaconda3-2019.03)
anaconda3-2019.03/envs/headfirst (created from /home/neon/.pyenv/versions/anaconda3-2019.03)
anaconda3-2019.03/envs/marklutc-books (created from /home/neon/.pyenv/versions/anaconda3-2019.03)
anaconda3-2019.03/envs/python-spec-lvl1 (created from /home/neon/.pyenv/versions/anaconda3-2019.03)
anaconda3-2019.03/envs/tceh-course (created from /home/neon/.pyenv/versions/anaconda3-2019.03)
myNewVenv-2.7.16 (created from /home/neon/.pyenv/versions/2.7.16)
myNewVenv-3.7.3 (created from /home/neon/.pyenv/versions/3.7.3)
webscraping-3.7.3 (created from /home/neon/.pyenv/versions/3.7.3)
(base) ➜ Видеокурс mkdir newPythonProject && cd newPythonProject
(base) ➜ newPythonProject pyenv virtualenv 3.4.4 newPythonProjectEnv
Ignoring indexes: https://pypi.python.org/simple
Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/neon/.pyenv/versions/3.4.4/envs/newPythonProjectEnv/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /home/neon/.pyenv/versions/3.4.4/envs/newPythonProjectEnv/lib/python3.4/site-packages

(base) ➜ newPythonProject pyenv versions
system
2.7.16
2.7.16/envs/myNewVenv-2.7.16
3.4.4
3.4.4/envs/newPythonProjectEnv
* 3.7.3 (set by /home/neon/.pyenv/version)
3.7.3/envs/myNewVenv-3.7.3
3.7.3/envs/webscraping-3.7.3
anaconda3-2019.03
anaconda3-2019.03/envs/headfirst
anaconda3-2019.03/envs/marklutc-books
anaconda3-2019.03/envs/python-spec-lvl1
anaconda3-2019.03/envs/tceh-course
myNewVenv-2.7.16
myNewVenv-3.7.3
newPythonProjectEnv
webscraping-3.7.3
(base) ➜ newPythonProject pyenv local newPythonProjectEnv
(newPythonProjectEnv) (base) ➜ newPythonProject pyenv local
newPythonProjectEnv
(newPythonProjectEnv) (base) ➜ newPythonProject pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
apturl (0.5.2)
argcomplete (1.8.1)
asn1crypto (0.24.0)
astroid (2.2.5)
beautifulsoup4 (4.6.0)
Brlapi (0.6.6)
certifi (2018.1.18)
chardet (3.0.4)
command-not-found (0.3)
cryptography (2.1.4)
cupshelpers (1.0)
Cython (0.29.2)
defer (1.0.6)
distro-info (0.18ubuntu0.18.04.1)
galternatives (0.92.2)
html5lib (0.999999999)
httplib2 (0.9.2)
idna (2.6)
isort (4.3.21)
jedi (0.11.1)
keyring (10.6.0)
keyrings.alt (3.0)
language-selector (0.1)
launchpadlib (1.10.6)
lazr.restfulclient (0.13.5)
lazr.uri (1.0.3)
lazy-object-proxy (1.4.1)
louis (3.5.0)
lxml (4.2.1)
macaroonbakery (1.1.3)
Mako (1.0.7)
MarkupSafe (1.0)
mccabe (0.6.1)
netifaces (0.10.4)
oauth (1.0.1)
olefile (0.45.1)
parso (0.1.1)
pexpect (4.2.1)
Photohash (0.4.1)
Pillow (5.3.0)
pip (9.0.1)
progressbar (2.3)
protobuf (3.0.0)
psutil (5.4.8)
pycairo (1.16.2)
pycrypto (2.6.1)
pycups (1.9.73)
pygobject (3.26.1)
pylint (2.3.1)
pymacaroons (0.13.0)
PyNaCl (1.1.2)
pyRFC3339 (1.0)
python-apt (1.6.4)
python-chess (0.24.1)
python-dateutil (2.6.1)
python-debian (0.1.32)
python-gnupg (0.4.1)
pytz (2018.3)
pyxattr (0.6.0)
pyxdg (0.25)
PyYAML (3.12)
reportlab (3.4.0)
requests (2.18.4)
requests-unixsocket (0.1.5)
scandir (1.9.0)
scour (0.36)
screen-resolution-extra (0.0.0)
SecretStorage (2.3.1)
setuptools (40.6.3)
simplejson (3.13.2)
six (1.12.0)
speedtest-cli (2.1.1)
system-service (0.3)
systemd-python (234)
thonny (2.1.16)
typed-ast (1.4.0)
ubuntu-drivers-common (0.0.0)
Ubuntu-Make (18.5)
ufw (0.36)
unattended-upgrades (0.1)
urllib3 (1.22)
usb-creator (0.3.3)
virtualenv (16.6.2)
wadllib (1.3.2)
webencodings (0.5)
wheel (0.30.0)
wrapt (1.11.2)
xkit (0.0.0)
youtube-dl (2019.6.8)
zope.interface (4.3.2)


НЕ РАСКРЫВАЙ!!!
Огромное спасибо тебе, человек, прочитавший мою простыню до конца)
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 1
Guest007
@Guest007
Django, Python, Linux и всё такое...
В случае local ты устанавливаешь конкретный интерпретатор (вирт) для текущего каталога (и вложенных).
При этом происходит, в том числе и его активация. В последствии у тебя это окружение активируется автоматически при входе в этот или вложенный каталог. Просто cd ~/prg/my_cool_project и у тебя уже активировалось окружение.

Если ты local не делал (или не в текущем каталоге), но хочешь воспользоваться каким-то своим виртом - делай activate и работай.

global - не для всей системы, конечно, но для тебя как пользователя, по умолчанию. Подмена системного.
local в конкретных каталогах это перекроет.

всё это, конечно, имеет смысл после создания вирта pyenv virtualenv 3.7.3 MyCoolVertualEnv. Создание вирта не активирует его, нужно руками activate или local
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы