从pypm安装的MySQLdb在Mac OSX上不能与32位python一起使用

时间:2011-05-06 11:33:11

标签: python macos wxpython mysql-python pypm

在继续之前,以下是我的Mac以及已安装的python(ActivePython)和wxpython版本的一些细节:

Mac版:10.6.6 Python版本:2.7.1(ActiveState Python) wxPython版本:wxPython2.8-osx-unicode-py2.7

这是我编写的一个小代码,用于测试:

#! /usr/bin/env arch -i386 /usr/local/bin/python

import time
import random
import re
import wx
from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
import serial
import itertools
import datetime
import sys
import os
import MySQLdb

print "Hello World"

以下是我从运行中获得的错误:

Traceback (most recent call last):
  File "./sar.pyw", line 13, in <module>
    import MySQLdb
  File "/Users/ven/Library/Python/2.7/lib/python/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Users/ven/Library/Python/2.7/lib/python/site-packages/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/ven/Library/Python/2.7/lib/python/site-packages/_mysql.so
  Expected in: flat namespace
 in /Users/ven/Library/Python/2.7/lib/python/site-packages/_mysql.so

正如您所看到的,我在shebang行中使用32位python,因为我需要使用仅在32位上运行的wxpython。现在,唯一遇到32位python问题的包是使用以下命令安装的MySQLdb

pypm install mysql-python

如果我刚刚从上面的代码中删除了

import MySQLdb
行,它会完美运行并打印“Hello World”。

如果我从shebang行中删除了“arch -i386”,则wxpython包不起作用。我想同时使用wxpython和MySQLdb。我该怎么做?

1 个答案:

答案 0 :(得分:1)

Duplicate; - )

这是known bug - mysql-python包目前仅针对64位构建。

  

我想同时使用wxpython和MySQLdb。我该怎么做?

wxPython 2.8不支持64位(由于使用Carbon),这就是PyPM软件包仅为32位构建的原因。您可以尝试使用wxPython 2.9。

解决方法:使用pypm(pypm uninstall wxpython)删除wxpython,然后从wxpython.org安装开发可可二进制文件wxPython2.9-osx-cocoa-py2.7