How can I make homebrew's python and pyenv live together?

后端 未结 4 1486
北海茫月
北海茫月 2020-12-22 22:56

After switching to python 3.4.3 from 2.7.9 (which was quite simple), I often wish to test some of my scripts with python 2.7.9 before sharing them with colleagues. I am usin

相关标签:
4条回答
  • 2020-12-22 23:35

    Just to add to @johnizzo1's answer, python2 is now python@2, so you should change the python3 for loop to something like:

    for i in `ls $(brew --cellar python)/`; do 
      ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew; 
    done
    
    for i in `ls $(brew --cellar python@2)/`; do 
      ln -s $(brew --cellar python@2)/$i $HOME/.pyenv/versions/$i-brew; 
    done
    
    0 讨论(0)
  • 2020-12-22 23:36

    A handy function to relink versions:

    pyenv-brew-relink() {
      rm -f "$HOME/.pyenv/versions/*-brew"
    
      for i in $(brew --cellar python)/*; do
        ln -s --force $i $HOME/.pyenv/versions/${i##/*/}-brew;
      done
    
      for i in $(brew --cellar python@2)/*; do
        ln -s --force $i $HOME/.pyenv/versions/${i##/*/}-brew;
      done
    }
    
    0 讨论(0)
  • 2020-12-22 23:39

    Well if you want the pyenv pythons and homebrew pythons to live together you need to make the name of the homebrew pythons something other than the version. Otherwise they will clash with the directory names that pyenv uses. For example, if you want to install pyenv python 2.7.11 and homebrew python 2.7.11 you could do something like this.

    for i in `ls $(brew --cellar python)/`; do 
      ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew; 
    done
    
    for i in `ls $(brew --cellar python3)/`; do 
      ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew; 
    done
    

    Essentially this will create a directory in $HOME/.pyenv/versions appended with '-brew' so that it won't clash with the pyenv pythons.

    0 讨论(0)
  • 2020-12-22 23:48

    You can install pyenv in your home directory (as described in pyenv's installation guide), and then create a symlink at ~/.pyenv/versions to $(brew --cellar)/python:

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

    The way Homebrew works nowadays, this will pick up both 2.x and 3.x.

    0 讨论(0)
提交回复
热议问题