Недавно я перешел на 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, но знаю, что я действительно хочу знать, как это работает. Спасибо!