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

med*_*duz 19 python homebrew 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)
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能为python自制软件编译的s 添加条目

mip*_*adi 20

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

ln -s $(brew --cellar python)/* ~/.pyenv/versions/
Run Code Online (Sandbox Code Playgroud)

如今Homebrew的工作方式,它将同时提升2.x和3.x.

  • 有没有办法让 homebrew 使用 pyenv 安装的 Python?我尝试了“ln -s ~/.pyenv/versions/3.7.3 $HOME/homebrew/Cellar/python”,但 homebrew 仍然尝试安装自己的Python。 (5认同)
  • 为了包含 homebrew 安装的所有 Python 版本,我使用 ln -s $(brew --cellar)/python*/* ~/.pyenv/versions/` 链接到 homebrew cellar 中的所有 `python*` 目录(注意 ` /python*` 用于匹配任何以“python”开头并以“/*”结尾的目录来链接子目录)。这避免了对特殊情况特定版本的需要(请参阅@ JacobWuzHere、@WalterGR 和 @laike9m 的评论) (5认同)
  • 实际上,您需要运行 `ln -s $(brew --cellar python)/* ~/.pyenv/versions`。否则添加的python版本将被称为`python`而不是`2.7.0` (2认同)
  • 对于Homebrew的Python 2,该公式现在称为python @ 2.如果`brew list -1 | grep python @ 2`打印`python @ 2`而不是什么,然后你安装了Homebrew的Python 2版本.如果你希望它在pyenv中可用,那么你需要在答案中稍微修改一下命令:`ln -s $(brew --cellar python @ 2)/*〜/.pyenv/versions /` (2认同)

use*_*671 9

[2022] homebrew 中的 python3 版本现在采用 python@3.x 格式,因此更新了 shell

#!/bin/bash

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

pyenv-brew-relink

Run Code Online (Sandbox Code Playgroud)


小智 6

重新链接版本的便捷功能:

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
}
Run Code Online (Sandbox Code Playgroud)


tes*_*ch1 5

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

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
}
Run Code Online (Sandbox Code Playgroud)