Различие между системным и пользовательским питоном

Недавно я перешел на Ubuntu 18.04 после многих лет работы с Mac OS. Я много работаю в Python и нуждаюсь в простом способе использования разных версий время от времени. Я пошел с pyenv из-за простоты и того, что он делает то, что мне нужно, и больше ничего. Я следовал этому руководству и все отлично работает. Я настроил его на Python 3.7.4 в коде VS, а синяя строка состояния в коде VS говорит о том, что среда ~/.pyenv/versions/3.7.4/bin/python.

Если я открываю терминал и запускаю python --version, он говорит: Python 3.7.4. Если я запускаю which python, он говорит /home/name/.pyenv/shims/python, так как в настоящее время я использую pyenv global 3.7.4. Как я понимаю, это не должно влиять на системный уровень Python, но все остальное. Позвольте мне просто сказать, что я хочу, чтобы это работало: когда я устанавливаю версию, каждый пользовательский код должен запускать эту версию Python (не затрагивая системный Python).

Перед установкой pyenv я подумал, что могу просто установить мои пакеты с помощью pip и покончить с этим. Это означает, что я думаю, что я установил некоторые пакеты в Python 2.7 и / или 3.6, которые пришли с 18.04. После проверки обе эти папки пусты:

ls -ltd /usr/local/lib/python2.7/dist-packages/*
ls -ltd /usr/local/lib/python3.6/dist-packages/*

На самом деле папка site-packages также пуста. Насколько я понимаю, все установленные пользователем библиотеки войдут в любой из них. Так что, похоже, я не установил никаких пакетов, хотя на самом деле я знаю, что сделал. Затем они были сохранены в системе Python, и это было хлопотно?


1. Где именно хранится системный питон, и где хранится установленный пользователем питон? Как и в Mac OS, у вас есть системный Python в / usr / bin / python, а установленный пользователь находится в usr / local / bin / python.

Верно ли, что питон в usr/local/lib соответствует Mac OS usr/local/bin. Хотя usr/lib соответствует системному python, то есть Mac OS usr/bin/python

, у меня также есть некоторые связанные с питоном файлы (не папки) в usr/bin/, например. python 2.7 python3 python3m python3.6 python3.6m и т. д. Что это за файлы? В свойствах говорится, что это «ссылка на исполняемый файл», поэтому я предполагаю, что это просто место, где хранится приложение?

Наконец, usr/lib/ содержит 4 папки python: python2.7, python3, python3.6 и python3.7. Ни одна из этих папок не пуста. В то время как usr/local/lib имеют 2 папки python: python2.7 и python3.6 - обе они содержат EMPTY site и папки dist.


2. Когда я захотел установить несколько пакетов, мне предложили обновить pip. Боюсь, я обновил не тот пункт. Я набрал в

pip3 install --upgrade pip

так без 3 в конце. Затем я продолжал получать ошибку "cannot import from main". После некоторого поиска в stackexchange я решил эту проблему, запустив

hash -d pip
hash -d pip3

, который работал без какого-либо вывода, и все, казалось, вернулось к нормальной работе и работает. Но пипс, конечно, все еще обновлялся с версии 9 до 19, если я правильно помню. Теперь и pip -V, и pip3 -V возвращают 19.2.1. Есть ли что-то не так с этим выше. Была ли причина, по которой пип так сильно устарел? Перед исправлением выше я получил сообщение об ошибке в Ubuntu, в котором говорится, что с pip что-то не так. Никогда это не повторялось после исправления.


3. Что еще я могу сделать, чтобы убедиться, что все установки Python соответствуют? В настоящее время у меня нет проблем, но я просто пытаюсь понять, как Ubuntu читает разные версии Python, поэтому я не повреждаю системный Python.


Надеюсь, вы поможете мне ответить на эти вопросы. Я никогда не сталкивался с этим слишком много на Mac OS, но знаю, что я действительно хочу знать, как это работает. Спасибо!

0
задан 29 July 2019 в 20:02

0 ответов

Другие вопросы по тегам:

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