Редакторы не учитывают псевдонимы оболочки Python - PullRequest
0 голосов
/ 01 марта 2020

Я запускаю macOS Catalina с zshell.

Из коробки у ОС есть одна python2 и одна python3 версия в /usr/bin/python и /usr/bin/python3. Я установил более новую python3 через Homebrew. Эта версия находится в /usr/local/opt/python@3.8/bin/python3.

Я добавил псевдонимы в мой ~/.zshrc -файл, чтобы и python, и python3 запускались в версии 3.8 Homebrew.

Когда используя редакторы (например, Atom), которые запускают python сценарии, вызывая python3, этот псевдоним не работает. Я предполагаю, что это потому, что он указан c для оболочки терминала.

Как лучше сделать так, чтобы мой домашний напиток python3 .8 стал по умолчанию python в моей системе?

1 Ответ

2 голосов
/ 02 марта 2020

Не использует псевдонимы для выбора альтернативных программ. Используйте переменную PATH для управления своими предпочтениями.

Начните с создания локального каталога bin, если у вас его еще нет.

mkdir -p ~/bin

Предполагая, что PATH уже настроенный на предпочтение версий Homebrew над версиями, установленными в системе, добавьте ~/bin в начало пути.

# In .bash_profile
PATH=~/bin:$PATH

Теперь создайте символическую c ссылку ~/bin/python на нужный Python 3 переводчика.

ln -s /usr/local/opt/python@3.8/bin/python3 ~/bin/python

Теперь, когда вы запустите python, вы получите переводчика Homebrew python3.8. Вы по-прежнему можете получить доступ к системе Python 2 с помощью /usr/bin/python при необходимости. Ваши редакторы также должны наследовать и уважать вашу переменную PATH, если только она не настроена на использование указанного c жестко заданного пути.

Обратите внимание, что Homebrew по-прежнему (?) Связывает /usr/local/bin/python со своим собственным * Переводчик 1032 * 2; Я не рекомендую изменять это значение на python3, чтобы другие программы, управляемые Homebrew, не получили Python 3, когда им требуется Python 2, следовательно, использование ~/bin. (Существует вероятность того, что программы, использующие python с помощью поиска по пути, предположат, что это Python 2, но это должно минимизировать проблемы.)

...