我的环境设置出了点问题。在尝试学习的过程中,我决定在 Macbook Pro 上重新安装 Mac OSX El Capitan,然后从头开始安装和配置。我使用的 Shell 是 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
和一个 Homebrewed 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
当您在 shell 提示符下python
输入时,只会考虑名称完全一致的二进制文件。python
如果您想要python
执行python3
,简单的方法是在您的个人 shell 启动文件中设置一个函数或别名。
您绝对不能将python
观点扩展到python3
系统范围,因为这会破坏一些需要 Python 版本 2 的操作系统和第三方工具。python
这两者是互相不兼容的语言(或者如果您愿意,可以称为方言)。
回顾一下这里发生了什么,当您command
在提示符下键入时,shell 会遍历您的目录中PATH
并查找command
每个目录中完全相同的可执行文件,直到找到一个,或者没有地方可以查找。它将忽略任何具有其他名称的文件,即使它们恰好相似,如xcommand
或commandante
或command3.xx
。如果您有别名或函数,则会使用它,尽管您PATH
可能会被咨询以找到别名或函数调用的其他命令。
答案2
shell 在 PATH 中搜索精确匹配。当您输入时python
,它会尝试查找匹配的可执行文件^python$
;^python...$
是不一样的。
在您的情况下,可能是 /usr/local/bin 中没有 python,或者可能存在权限问题,这会导致它被跳过。
1 )如果没有python
:/usr/local/bin
您可以使用它来创建指向要使用的 Python 解释器的sudo ln -s /usr/local/bin/python3.6 /usr/local/bin/python
软链接。由于 /usr/local/bin 是您的 PATH 的首选搜索,因此 shell 现在应该会找到此链接。python
2)如果文件存在/usr/local/bin
但没有执行允许,尝试一下sudo chmod a+x /usr/local/bin/python
。
现在想不出其他问题。