Что-то очень не так с моей настройкой среды. Пока я пытаюсь учиться, я решил переустановить 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
~ ❯
На снимке экрана ниже четко видно, что установлены два Python2 /usr/bin
и самодельный Python3 в /usr/local/bin
.
Вот результат 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
python
При вводе python
в командной строке будут учитываться только точно указанные двоичные файлы .
Если вы хотите python
выполнить python3
, то самый простой способ сделать это — задать функцию или псевдоним в ваших персональных файлах запуска оболочки.
Ни в коем случае не следует указывать python
общесистемный python3
уровень, поскольку это нарушит работу некоторых ОС и сторонних инструментов, для которых требуется python
Python версии 2. Это два взаимно несовместимых языка (или диалекта, если вам так больше нравится).
Чтобы рассмотреть, что здесь происходит, когда вы печатаете command
в приглашении, оболочка перебирает каталоги в вашем PATH
и ищет исполняемый файл, названный точно command
в каждом, пока не найдет его или не закончатся места для поиска. Она просто проигнорирует любые файлы с другими именами, даже если они будут похожи, например xcommand
или commandante
или command3.xx
. Если у вас есть псевдоним или функция, они будут использоваться вместо этого, хотя PATH
затем, возможно, к вам будут обращаться, чтобы найти другие команды, вызываемые вашим псевдонимом или функцией.
решение2
Оболочка ищет PATH дляточные совпадения. Когда вы вводите python
, он пытается найти исполняемый файл, соответствующий ^python$
; ^python...$
это не одно и то же.
В вашем случае это может быть связано с тем, что в /usr/local/bin нет python или есть проблема с правами доступа, из-за чего он будет пропущен.
1) Если нет python
в /usr/local/bin
:
Вы можете использовать sudo ln -s /usr/local/bin/python3.6 /usr/local/bin/python
для создания мягкой ссылки python
, указывающей на интерпретатор Python, который вы хотите использовать. Поскольку /usr/local/bin ищется первым для вашего PATH, оболочка теперь должна найти эту ссылку.
2) Если файл существует, /usr/local/bin
но не имеетвыполнятьразрешение, попробуйте sudo chmod a+x /usr/local/bin/python
.
Сейчас не могу вспомнить другие проблемы.