如何在同一台OSX机器上设置32位和64位版本的MySQL Python?

如何在同一台OSX机器上设置32位和64位版本的MySQL Python?,python,mysql,macos,64-bit,32-bit,Python,Mysql,Macos,64 Bit,32 Bit,我被指派维护一个用Python编写的与MySQL接口的工具。用户通过使用不同版本Python的不同应用程序使用此工具 有时,同一应用程序的不同软件版本之间的Python版本会发生变化。我们无法控制用户选择与之交互的应用程序(虽然它们都有Python接口并在OSX下运行),但除了Python MySQL的问题外,我几乎可以完成所有工作。具体来说,有些软件使用64位版本的Python。其他的则是32位版本。OS X(我需要支持的操作系统)附带安装了Python和Python MySQL 32位,因此

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

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

import MySQLdb 
在使用Python64位的软件中,导入失败,应用程序会说OSX附带的MySQL二进制文件类型错误

我已经下载、编译并安装了PythonMySQL作为64位应用程序,但PythonMySQL使用Python鸡蛋。鸡蛋似乎是硬编码的,指向一个特定的磁盘位置。在我的机器上是
/usr/local/lib/mysql

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

我曾尝试创建不同的egg,并创建了一个64位版本的egg,其中我将egg更改为指向
/usr/local/lib/mysql\u x86\u 64
,但我不知道如何实现。我还尝试在编译Python MySQL时更改设置以指向该位置,但我找不到一种方法

现在我正在用谷歌搜索我的生活,但如果我刚刚写的东西给任何人敲响了警钟,你介意启发我吗

我根本不是Python MySQL专家。

用于创建具有不同解释器的单独Python环境


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

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

port install mysql5 +universal
(通过编辑将MySQL客户端libs安装到
/opt/local/lib/mysql5/MySQL/
/opt/local/macports/variants.conf,将
+universal
作为所有端口的默认变量更容易)。然后安装链接到该库目录的python mysql包,而不是您在别处安装的任何程序包

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

port install py27-mysql +universal

但是,如果您无法控制用户正在使用哪些Python,那么这可能没有什么用处。

如果只是为了您的测试,我会使用虚拟化来实现32位和64位版本。没有必要为此在OS X上进行虚拟化。OS X完全支持同一文件中的32位和64位可执行文件。