2012-11-04 43 views
0

我被分配来维护一个用Python编写的与MySQL接口的工具。用户通过使用不同版本的Python的不同应用程序使用此工具。如何在同一台OSX机器上设置32位和64位版本的MySQL-Python?

有时,Python版本会在相同应用程序的软件版本之间更改。我们无法控制用户选择与之交互的应用程序(它们都具有Python界面,并且可以在OS X下运行),但除了Python-MySQL的问题外,我几乎可以开展所有工作。具体而言,某些软件使用Python的64位版本。其他的还有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位是使用Python的32位版本的失败的应用程序,但所有其他工具。如果我在该磁盘位置拥有32位版本的MySQL,则32位工具将工作,而64位版本将停止执行我所需的操作。

我试图创建不同的鸡蛋,并有一个64位版本的地方,我把鸡蛋改为指向/usr/local/lib/mysql_x86_64,但我无法弄清楚如何去做。我也试着在编译Python-MySQL的时候改变设置,指向那个位置,但是我找不到这样做的方法。

现在我谷歌搜索我的生命上的问题,但如果我刚才写摇铃任何人你介意告诉我吗?

我不是一个Python-MySQL专家。

+0

当它只是为了您的测试,我会使用虚拟化有一个32位和64位版本。 – Rufinus

+0

为此,无需在OS X上进行虚拟化。 OS X在同一文件中完全支持32位和64位可执行文件。 –

回答

0

使用virtualenv创建单独的Python环境,具有不同的解释。

蟒蛇,MySQLdb的链接是针对安装在系统上某个库。每个环境都可以链接到不同的位置。

0

没有必要拥有MySQL客户端库在OS X两个不同的版本,可以安装具有32位和64位在同一个文件的二进制文件的通用版本。然后将MySQLdb适配器(python-mysql)的一个实例安装到您需要的每个Pythons上,链接到该库的一个通用版本。不幸的是,由于某种原因,MySQL项目没有提供通用二进制文件。但建立自己很容易。我建议使用OS X的第三方包管理器,如Homebrew或MacPorts。我不知道关于自制软件,但我从个人经验知道,使用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 

但是,如果你不拥有控制权您的用户正在使用哪种Pythons,这可能不会有用。

相关问题