что-то очень плохое происходит с моим окружением. Поскольку я пытаюсь учиться, я решил переустановить Mac OSX El Capitan на моем Macbook Pro и начать установку и настройку с нуля. Оболочка, которую я использую - ZSH, и я немного настроил ее с помощью Oh-My-ZShell.

Мой $ PATH и Python:

~ ❯ echo $PATH
/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
~ ❯ python --version
Python 2.7.10
~ ❯

Снимок экрана ниже ясно показывает, что в /usr/bin установлено два Python2, а в /usr/local/bin - Homebrewed Python3.

Скриншот терминала с путями Python2 и Python3

Вот результат printenv (только записи, связанные с PATH и SHELL):

PATH=/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
PWD=/Users/edchigliak
SHELL=/usr/local/bin/zsh
SHLVL=2
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.lRGo5iu4NA/Listeners
TERM=screen-256color
ZSH=/Users/edchigliak/.oh-my-zsh
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
_=/usr/bin/printenv

Первая запись в моем .zshrc:

export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin 

Большое спасибо!

1 ответ1

0

Только двоичные файлы с точным именем python будут учитываться при python в командной строке.

Если вы хотите, чтобы python выполнял python3 , простой способ сделать это - установить функцию или псевдоним в ваших личных файлах запуска оболочки.

Вы абсолютно не должны указывать python на python3 в масштабе всей системы, потому что это сломает некоторые ОС и сторонние инструменты, которые требуют, чтобы python был Python версии 2. Это два несовместимых языка (или диалекта, если вы предпочитаете).

Чтобы посмотреть, что здесь происходит, когда вы вводите command в командной строке, оболочка выполняет итерацию по каталогам в вашей PATH и ищет исполняемый файл с именем, точно названным command в каждой, пока не найдет один или не исчерпает места для поиска. Он будет просто игнорировать любые файлы с другими именами, даже если они окажутся похожими, например, xcommand или commandante или command3.xx . Если у вас есть псевдоним или функция, она будет использоваться вместо этого, хотя, возможно, тогда будет использоваться ваша PATH для поиска других команд, вызываемых вашим псевдонимом или функцией.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .