简体   繁体   中英

python and python3 command does not point to pyenv global version

I had previously installed python 2.7 and python 3 with homebrew.

I added these versions to pyenv

ln -s $(brew --cellar python)/* ~/.pyenv/versions
ln -s $(brew --cellar python@2)/* ~/.pyenv/versions

When I set the global version with pyenv global 3.6.5 , I get the following error on running this command

➜ python --version
pyenv: python: command not found

The `python' command exists in these Python versions:
  2.7.15

I'd like to setup so that python command points to the global version.

Homebrew's python formula is Python 3. To avoid breaking applications which expect the python command to run Python 2, brew install python does not add a python command, only python3 . This is included in the caveats, visible in brew info python :

Python has been installed as /usr/local/bin/python3

Unversioned symlinks python , python-config , pip etc. pointing to python3 , python3-config , pip3 etc., respectively, have been installed into /usr/local/opt/python/libexec/bin

When using homebrew only, it's easy to get python to point to Python 3 by adding a line like this to one's shell configuration:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

So, one solution could be to link pyenv to that directory instead:

ln -s $(brew --prefix)/opt/python/libexec/bin ~/.pyenv/versions/3-brew

This would make python work. However, it means that python3.6 won't work, because that executable lives back in $(brew --cellar python)/3.6.5 , so it's not a complete solution. I haven't yet figured out anything that preserves both behaviors without manually adding symlinks to Homebrew's installed Python.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM