Нужна помощь в решении проблемы с двумя версиями python, доступными на моем Macbook

#python-3.x #macos #python-2.7 #homebrew

Вопрос:

Я недавно купил macbook, и я новичок во всем, что связано с этой ОС. Последовал нескольким руководствам по настройке машины для программирования и разработки. Таким образом, я установил python(3.9) через Homebrew, позже, проверяя путь как в brew, так и в терминале, оба указывают на python 2.7.16, затем я понял, что у Mac OS уже была своя установка с 2.7.16. Сейчас я просматриваю несколько предложений в Интернете о том, как преодолеть это и сделать единую версию по умолчанию. Я нашел приведенные ниже команды для связи версии brew(3.9.15) с версией системы(2.7.16). Скопировано с другого поста.

[[ Вот что меня смущало и как я это решил.

 $ which python
/usr/bin/python 

$ which python3
/usr/local/bin/python3

$ ls /usr/local/bin/python
ls: /usr/local/bin/python: No such file or directory
So notice I didn't have a HomeBrew installation of python2.7, but did have the python3 installation. The version under /usr/bin/python is using the system default. You can tell based on the module search path:

$ /usr/bin/python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
`enter code here`Type "help", "copyright", "credits" or "license" for 
more information.
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/...
Notice the '/Library/Python'... that's Mac OS's version of python. But I want to stay strictly on a user installed version (i.e. HomeBrew).

So here's what I did to fix this:

$ brew install python
...
Warning: python 2.7.13 is already installed, it's just not linked.
You can use `brew link python` to link this version.

$ brew link --overwrite python

$ which python
/usr/local/bin/python

$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python/2.7.13...
Its no longer /Library/.. but /usr/local.
 

Теперь он находит все мои установленные модули pip! Проблема решена! ]]

Вышеуказанные шаги на самом деле касаются слияния аналогичной версии ~ 2.7, которая относится к Python2.

Но на моей машине я установил Python3, и ранее у него был Python2.

Вот мой вопрос.

Должен ли я сначала обновить версию системы до Python3, а затем связать ее с версией Brew(3.9.15), выполнив вышеуказанные команды или какие-либо предложения, пожалуйста??

Комментарии:

1. мой совет (я думаю, что это относительно стандартно): не трогайте установку системы, и, вероятно, не лучше использовать homebrew для установки python. Используйте virtualenv, conda или docker для определения зависимостей python отдельно от версии системы.

Ответ №1:

Должен ли я сначала обновить версию системы до Python3, а затем связать ее с версией Brew(3.9.15)

python2 и python3-несовместимые программы. Вы не должны пытаться «обновить» эту версию до python3. Потому что, если вы сделаете это, существующее программное обеспечение может перестать работать, так как это, вероятно, зависит от python2. Вашим лучшим вариантом действий было бы явно использовать версию python3 из brew, в любом случае python2 находится в режиме устаревания. (Я использую псевдоним like alias py3=python3 , чтобы я мог вызывать его py3 вместо написания python3 )

В качестве отступления — вы должны настроить свои проекты/программы с помощью virtualenv/venv; это позволит не загрязнять установку вашей системы. Вы даже можете поделиться этим с другим компьютером, извлекая зависимости проекта в requirements.txt.