由于以上所有答案都很老,我想在这里总结一下我的发现。在来自 rvm/ruby 之后,我试图弄清楚它是如何与 Python 一起工作的,但在网上的任何地方都找不到明确的解释。
所以我们在 Macos 上有以下选项:
自制软件(仅限 MacOS)
...可以安装python和python3。它们将存储在 Homebrew 的酒窖中,并通过/usr/local/bin 进行符号链接。截至目前,使用brew 安装的默认python 为2.7.6。
使用pip 安装的软件包将进入默认位置(您还拥有pip 和pip3 符号链接)。
Pyenv(Pythonbrew 的继承者)
...是 Homebrew(在 Macos 上)安装和维护多个 Python 版本的替代方法。 Linux 没有 Homebrew,所以 Pyenv 是一种专门用于 Python 的版本。它还从源代码构建 Python。
Pyenv 将 python 安装保存在 ~/.pyenv/versions/ 中,并允许在二进制文件之间快速切换并使用相同的名称(python、pip 等)。它使用“shim”二进制文件,这些二进制文件是伪造的二进制文件,如 python、pip 等,它们模仿 Python 的,而只是默默地将执行重定向到当前活动的版本。
使用pip 安装的包将进入活动 Python 安装。
因此,这些方法都不足以为每个项目维护单独的 python 安装和包版本集(就像 rvm 对 gemsets 所做的那样)。因此:
虚拟环境
...是最接近 rvm 的东西。引用this post:
它通过从主要 Python 安装中复制或链接文件来创建新的 bin 和 lib 目录,从而在新目录中设置 Python 的干净副本
因此它使用当前活动的 Python 副本并将其复制到单独的目录中。 virtualenvwrapper 添加了管理这些环境的功能,并使用 cd 自动激活它们,就像 rvm 所做的那样。
这允许隔离用于每个项目的 python 版本和安装的库。但是,它本身不会安装python 版本。
因此,听起来大多数人使用pyenv + virtualenv 或brew + virtualenv 的组合(当然,brew 是特定于 Macos 的)。第一部分用于安装python版本(如果需要),第二部分是为不同的项目克隆它们并在它们之间切换。
PS:我才刚开始弄明白,如果这里有什么问题,请纠正我。
PPS:在我看来,通过将 pyenv 和 virtualenv 结合在一个屋檐下,可以改善整个业务......