【问题标题】:How to setup 32 and 64 bit versions of MySQL-Python on the same OSX machine?如何在同一台 OSX 机器上设置 32 位和 64 位版本的 MySQL-Python?
【发布时间】:2012-10-24 08:23:38
【问题描述】:

我被指派维护一个用 Python 编写的与 MySQL 交互的工具。用户通过使用不同版本 Python 的不同应用程序使用此工具。

有时,同一应用程序的软件版本之间的 Python 版本会发生变化。我们无法控制用户选择与之交互的应用程序(尽管它们都有 Python 接口并在 OS X 下运行),但除了 Python-MySQL 的问题外,我几乎可以正常工作。具体来说,某些软件使用 64 位版本的 Python。其他的则带有 32 位版本。 OS X(我需要支持的操作系统)附带 Python 和 Python-MySQL 32 位安装,所以如果我尝试:

import MySQLdb 

在使用 Python 64 位的软件中,导入失败,应用程序会说 OS X 附带的 MySQL 的二进制文件类型错误。

我已将 Python-MySQL 作为 64 位应用程序下载、编译和安装,但 Python-MySQL 使用 Python 鸡蛋。似乎鸡蛋被硬编码以指向特定的磁盘位置。在我的机器上是/usr/local/lib/mysql

如果我在该路径上有 64 位版本,那么我的工具适用于具有 Python 64 位版本的应用程序,但所有其他使用 32 位版本 Python 的工具都会失败。如果我在该磁盘位置有 32 位版本的 MySQL,则 32 位工具可以工作,而 64 位版本将停止执行我需要的操作。

我尝试创建不同的鸡蛋并拥有一个 64 位版本,我将鸡蛋更改为指向 /usr/local/lib/mysql_x86_64,但我不知道该怎么做。我还尝试在编译 Python-MySQL 以指向该位置时更改设置,但我找不到这样做的方法。

现在我正在谷歌上搜索我的生活,但如果我刚刚写的内容对任何人敲响了警钟,你介意启发我吗?

我根本不是 Python-MySQL 专家。

【问题讨论】:

  • 当它只是为了您的测试时,我会使用虚拟化来拥有 32 位和 64 位版本。
  • 无需为此目的在 OS X 上进行虚拟化。 OS X 完全支持同一文件中的 32 位和 64 位可执行文件。

标签: python mysql macos 64-bit 32-bit


【解决方案1】:

使用virtualenv 创建具有不同解释器的独立 python 环境。

python-MySQLdb 正在链接到您系统上安装的某个库。每个环境都可以链接到不同的位置。

【讨论】:

    【解决方案2】:

    无需在 OS X 上拥有两个不同版本的 MySQL 客户端库。您可以安装一个通用版本,在同一个文件中同时包含 32 位和 64 位二进制文​​件。然后将 MySQLdb 适配器 (python-mysql) 的实例安装到您需要的每个 Python,链接到该库的一个通用版本。不幸的是,由于某种原因,MySQL 项目没有提供通用二进制文件。但建立自己很容易。我建议为 OS X 使用第三方包管理器,例如 Homebrew 或 MacPorts。我不了解 Homebrew,但我从个人经验中知道使用 MacPorts 非常简单。在installing the MacPorts base 之后,您可以安装 MySQL 及其所有依赖项:

    port install mysql5 +universal
    

    (通过编辑/opt/local/macports/variants.conf 使+universal 成为所有端口的默认变体更容易。)这会将MySQL 客户端库安装到/opt/local/lib/mysql5/mysql/。然后安装链接到该库目录的 python-mysql 包,而不是您可能在其他地方安装的任何包。

    使用 MacPorts 安装完整的解决方案甚至更容易,即安装通用 Python、通用 MySQLdb 以及 MySQL 客户端库:

    port install py27-mysql +universal
    

    但是,如果您无法控制您的用户正在使用哪些 Python,那可能就没用了。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      相关资源
      最近更新 更多