Я недавно обновил python до python@3.8 через homebrew.
Затем я заметил, что мои сценарии python не могут связываться с глобальные python пакеты, которые я ранее установил с помощью pip (пакеты, установленные глобально, а не в виртуальной среде).
Это отправило меня в кроличью нору понимания того, как python настроен на macos и У меня есть несколько вопросов.
pip, установленный homebrew, теперь установит все пакеты в / usr / local / lib / python3 .8 / site-packages .
- Означает ли это, что мне нужно переустановить все мои python пакеты, которые были (и остаются) в / usr / local / lib / python3 .7 ? Должен ли я удалить последний каталог после? (Если на то пошло, я вижу, что у меня также есть каталог / usr / local / lib / python3 .6 )
- Какой эффективный способ управления этим в будущем, когда следующий python обновление идет? Виртуальные среды для каждого проекта (я не очень знаком с использованием виртуальных сред)?
Когда я запускаю brew list | grep python
, я получаю следующий список
python
python3
python@3.8
Я вижу, что python@3.8 правильно обозначен символической ссылкой как / usr / local / bin / python3, но я не знаю, что это за python и python3 в приведенном выше списке с тех пор, как я смотрю на / usr / local / Cellar , я вижу, что у меня есть пустой каталог / usr / local / Cellar / python и / usr / local / Cellar / python3 каталог, на который есть символическая ссылка. Могу ли я удалить эти две папки?
Наконец, изучив все это, я был удивлен, обнаружив исполняемый файл python3, находящийся в
/ usr / bin . Заглянув в
sys.path , когда я выполняю
/ usr / bin / python3, я вижу, что это своего рода python, установленный Xcode, поскольку он ищет библиотеки в различных Каталоги Xcode.app. Поскольку мой
/ usr / local / bin находится в верхней части моей переменной envt PATH, этот python3 никогда не будет вызываться, но мне интересно, зачем мне это вообще нужно и могу ли я просто избавиться
Я полагаю, что ответом на многие из этих вопросов будет использование виртуальных сред, чего я чудом избегал делать так долго ... Хотелось бы некоторой помощи в понимании вышеизложенного.
EDIT: Running brew info python
или brew info python3
возвращает то же самое
python@3.8: stable 3.8.3 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python@3.8/3.8.3_2 (4,268 files, 65.5MB) *
Poured from bottle on 2020-07-12 at 23:19:08
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.8.rb