python - Homebrew 和 pyenv 在 MacOSX Yosemite 上的共存

标签 python python-3.x homebrew boost-python pyenv

关于 Homebrewpyenv 在 MacOSX Yosemite 上共存的几个新手问题。在将我的 google-fu 水平应用到该主题后,这些是我仍然感到困惑的事情。抱歉,篇幅太长了,但我想尽可能清楚。

首先,介绍一些背景知识。我使用 brew 安装 pyenv,然后使用 pyenv 安装 python2 和 python3。

brew install pyenv
brew install pyenv-virtualenv
*I also added the necessary hooks into my profiles.*
pyenv install 2.7.10
pyenv install 3.4.3
pyenv rehash
pyenv global 2.7.10

<强>???问题(或澄清)。如果 brew 使用 pyenv 安装的 python,我认为这是不受欢迎的,因为 brewed 包将依赖于 brew 之外的东西构建(例如,使用 pyenv 卸载 python 版本可能会破坏 brewed 包)?看来 brew 使用 PATH 中最先出现的 python(目前是 pyenv 的版本)?但是,在以下每种情况下,垫片都是针对“python”而不是“python3”(即使是 pyenv 3.4.3)。那么我是否正确地假设设置“pyenv shell 3.4.3”将使 brew link python 命令(它假定用于 python2.x)到 pyenv 的 python 3.4.3,我猜这会把事情搞砸?

pyenv shell 2.7.10
brew --config
Python: /Users/anonymous/.pyenv/shims/python => /Users/anonymous/.pyenv/versions/2.7.10/bin/python2.7
pyenv shell 3.4.3
brew --config
Python: /Users/anonymous/.pyenv/shims/python => /Users/anonymous/.pyenv/versions/3.4.3/bin/python3.4
pyenv shell system
brew --config
Python: /Users/anonymous/.pyenv/shims/python => /usr/bin/python

<强>???问题。如果使用 pyenv 的 python 来 brew 是一个坏主意,那么我是否还应该安装 python 和 python3 的 brew 版本,或者这会发生冲突并以某种方式引起问题吗?我的选择似乎是使用系统 python安装在我的 Mac 上,或者使用 brew 自己的 python 来满足我所有的 brew 需求。在第一种情况下,我可以确保在任何 brew 之前调用“pyenv shell 系统”,或者像其他人建议的那样设置一些别名来自动执行此操作(alias brew="env PATH=${PATH//$(pyenv root)/垫片:/冲泡”)。但是,这意味着我必须使用相当过时的系统 python。相反,如果我还使用 brew 来安装 python2 和 python3,这是否会与以任何方式使用 pyenv 安装的版本发生冲突,或者 brew 的 python 是否会快乐地与 pyenv 完全分开(我认为这是真的,但我想在之前仔细检查我试试)?这会不会给我一个设置,我所有的 brew 都使用 brew 的 python 或 python3(我假设我仍然需要一个像上面那样的别名,以确保在我的 PATH 中没有首先找到 pyenv 的版本),而 brew 之外的所有其他东西都会使用 pyenv 的 python ?出于任何原因,这是一个坏主意吗?

pyenv global system
*Add to profile:*
alias brew="env PATH=${PATH//$(pyenv root)\/shims:/} brew"
brew install python
brew install python3

<强>???例如,考虑我想使用 brew 安装带有 python3 绑定(bind)的 boost-python 的场景。这是否需要一个 brewed python3 版本,它随后是否适用于不同的 pyenv 版本的 python 3.x?如果我只安装了 pyenv 的版本,--with-python3 标志在这种情况下是否有效?另一方面,如果除了 pyenv 之外我还安装了 brew 的 python3,我假设 --with-python3 将链接到 brew 的 python3(具有以上别名)。如果是这样,当从运行 pyenv 版本的 python session 调用时,boost-python 甚至可以使用吗(不确定这是否更适合作为关于 boost-python 本身的问题),或者这完全没问题吗?

brew install boost
brew install boost-python --with-python3

<强>???关于指向 pyenv python 的 brew 符号链接(symbolic link)的意见? 另一篇文章建议对 pyenv 的 python 进行符号链接(symbolic link),以便 brew 可以找到它们。除了 brew 现在依赖于 python 而不是它自己管理的明显警告之外,这个想法有什么可怕的错误吗?

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

最佳答案

我会尽量回答你的每一个问题。

1 brew 是否对使用 pyenv 而不是 brew 的 Python “皱眉”?

简而言之,是的。他们布置了the whole story here ,简而言之,您要靠自己来解决出现的问题。

2 brew Python和pyenv Python会不会冲突?

没有。作为Tim Smith在另一个答案中说,“如果你这样做,应该不会发生什么坏事”。使用您的 PATH 来管理您(或应用程序)看到的 Python(这就是 pyenv 所做的)。

brew 满足 Python 依赖性的 3 个包 Python 使用来自 pyenv 的“淘汰”Python

正如 Tim 所说,这应该不是问题。

4 使用符号链接(symbolic link)以便我们只使用 pyenv Python?

我想你指的是 this post ,这是一个有趣的想法,但维护起来可能很危险。 Fwiw,我现在正在做这个。 我布置how to do it here .

关于python - Homebrew 和 pyenv 在 MacOSX Yosemite 上的共存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32018969/

相关文章:

python - 为什么调用 logging.info 会改变我的记录器打印的内容?

python-3.x - 如何在python3环境中执行scons?

Homebrew cask 使用 `brew cask` 标志调用 `--caskroom` 已被禁用

ruby-on-rails - 在 OS X 10.8.3 下无法安装 Homebrew 软件

python - 配置不当 : The SECRET_KEY setting must not be empty error after editing django auth pipeline

python - 在 Python 中实现二叉搜索树来处理重复键

python - 如何使用python更改kivy语言中的标签文本

python-3.x - 使用 python 3 将文件夹中的文件名列出到 tkinter 窗口

curl - curl在Mac上不支持http2

python - 如何使用 BeautifulSoup 获取嵌套在 TD 中的 DIV 内部的链接