我怎样才能让自制的python和pyenv一起生活?

时间:2015-05-28 07:22:01

标签: python homebrew pyenv

从2.7.9(非常简单)切换到python 3.4.3之后,我经常希望在与同事共享之前用python 2.7.9测试我的一些脚本。我正在使用OSX优胜美地平台,其中包含从自制软件编译的所有内容。

情况非常糟糕(在每一步设置PATH es和PYTHONPATH) - 直到我发现pyenv这样做非常容易并且可以使用自制软件轻松安装。到目前为止,非常好。

但是,现在我正在使用这个版本的python,它不一定能与自制软件一起使用。而且,我发现我可以切换回系统的python,更普遍的是pyenv可以访问它:

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

但是我怎样才能为自制的<{strong>>编译的python添加条目?

6 个答案:

答案 0 :(得分:18)

您可以在主目录中安装pyenv(如pyenv的安装指南中所述),然后在$(brew --cellar)/pythonln -s $(brew --cellar python)/* ~/.pyenv/versions/ 创建一个符号链接:

{{1}}

Homebrew现在的工作方式,它将同时选择2.x和3.x。

答案 1 :(得分:3)

如果你想让pyenv蟒蛇和自制蟒蛇一起生活,你需要让自制蟒蛇的名字不是版本。否则它们将与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 /版本中创建一个目录,附加&#39; -brew&#39;这样它就不会与pyenv pythons发生冲突。

答案 2 :(得分:2)

只需添加到@johnizzo1的答案中,python2现在为max.poll.interval.ms,因此您应将python3 for循环更改为类似以下内容:

python@2

答案 3 :(得分:2)

将之前答案的所有部分放在一起,形成一个实际工作的环来绑定它们:

pyenv-brew-relink() {
    rm -f "$HOME/.pyenv/versions/*-brew"
    for i in $(brew --cellar)/python* ; do
        ln -s -f "$p" "$HOME/.pyenv/versions/${i##/*/}-brew"
    done
    pyenv rehash
}

答案 4 :(得分:1)

一个方便的功能来重新链接版本:

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
}

答案 5 :(得分:1)

在 2020 年,在 class Employee: def __init__(self, firstname, lastname): self.firstname = firstname self.lastname = lastname self.fullname = f'{firstname} {lastname}' 之后,您需要 ln -s /outside/python/x.x.x ~/.pyenv/versions/x.x.x 重新散列垫片。

示例:在pyenv中添加macos系统python 2.7

pyenv rehash