21

我目前在我的 Mac 上安装了多个版本的 Python,它附带的版本、我最近从 python.org 下载的版本、用于在本地运行 Zope 的旧版本以及 Appengine 正在使用的另一个版本。这有点乱。有什么建议使用一个版本的 python 来统治它们吗?我将如何删除旧版本并将我的所有应用程序链接到单个安装。我应该知道任何特定于 Mac 的问题吗?这是一个愚蠢的想法吗?

4

4 回答 4

20

拥有多个版本的 Python 并没有本质上的错误。有时在使用具有版本依赖关系的应用程序时这是必需的。可能最大的问题是处理可能因应用程序而异的站点包依赖关系。像这样的工具virtualenv可以在那里提供帮助。您不应该做的一件事是尝试在 /System/Library/Frameworks 中删除 Apple 提供的 Python,并从 /usr/bin/python 链接到该 Python。(注意这里最近对多个版本的讨论。)

于 2009-08-02T16:09:49.230 回答
9

Ian Bicking 的virtualenv允许我为我构建的每个应用程序使用隔离的 Python,并让我决定是否在隔离的 Python 环境中包含全局站点包。

我没有在 Zope 上尝试过,但我猜以下应该可以很好地工作:

  1. 使用你的 Zope 的 Python,创建一个新的 virtualenv,可以有或没有 --no-site-packages
  2. 将 Zope 放入 virtualenv
  3. 使用 $VENV/bin/activate 激活环境
  4. 安装任何需要的站点包
  5. 现在在 $VENV/bin/python 使用 Python 运行 Zope

这对于使用各种版本的 Python、Django 和附加组件管理 Django 项目非常有效。

本文似乎更详细地介绍了 Grok 和 Virtualenv 的细节,但一般性也适用于 Zope。

于 2009-08-02T18:27:39.760 回答
2

+1 为虚拟环境。

即使您不需要不同的 Python 版本,将开发依赖项与系统 Python 分开仍然是件好事。

我不确定您使用的是什么操作系统,但我发现这些说明对于在 OSX 上运行 python 开发环境非常有用。

于 2009-08-24T07:57:54.937 回答
1

我喜欢的方法应该适用于每个类 UNIX 操作系统:

为每个需要特定 python 版本的应用程序创建一个用户帐户。在每个用户中安装带有用户本地前缀(如 ~/build/python)的相应 python 版本,并将 ~/build/bin/ 添加到用户的 PATH 环境变量中。以正确的用户安装/使用您的 python 应用程序。

这种方法的优点是各个 python 安装之间的完美隔离,以及相对方便地选择正确的 python 环境(仅su适用于适当的用户)。操作系统也保持不变。

于 2009-08-02T17:13:27.003 回答