web-dev-qa-db-ja.com

自作のpythonとpyenvを一緒に住まわせるにはどうすればよいですか?

2.7.9からpython 3.4.3(非常に単純でした))に切り替えた後、python 2.7.9でスクリプトの一部をテストしたいことがよくあります同僚と共有する前に、自作からコンパイルされたすべてのものを備えたOSXヨセミテプラットフォームを使用しています。

状況は非常に醜いものでした(各ステップでPATHesとPYTHONPATHを設定)-私が発見するまで pyenv これは非常に簡単で、自作を使用して簡単にインストールできます。ここまでは順調ですね。

ただし、このバージョンのpythonを使用しているため、自作のバージョンと必ずしもうまく機能するとは限りません。さらに、システムのpythonに戻すことができ、より一般的にはpyenvがそれにアクセスできることがわかりました。

$ pyenv versions
  system
  2.7.9
* 3.4.3 (set by /usr/local/var/pyenv/version)

しかしhomebrewによってコンパイルされたpythonsのエントリを追加するにはどうすればよいですか?

23
meduz

(pyenvのインストールガイドで説明されているように)ホームディレクトリにpyenvをインストールしてから、_~/.pyenv/versions_から$(brew --cellar)/pythonへのシンボリックリンクを作成できます。

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

Homebrewが最近機能する方法では、これは2.xと3.xの両方を採用します。

23
mipadi

Pyenvpythonとhomebrewpythonを一緒に使用したい場合は、homebrewpythonの名前をバージョン以外のものにする必要があります。そうしないと、pyenvが使用するディレクトリ名と衝突します。たとえば、pyenv python 2.7.11およびhomebrew python 2.7.11をインストールする場合は、次のようにすることができます。

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

基本的に、これにより$ HOME/.pyenv/versionsに '-brew'が追加されたディレクトリが作成され、pyenvpythonと衝突しなくなります。

3
johnrizzo1

@ johnizzo1 の答えに追加するだけで、python2はpython@2になっているので、python3forループを次のように変更する必要があります。

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
2
xuru

バージョンを再リンクするための便利な関数:

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
}
1
decay_of_mind