MySQLdb, установленный из pypm, не работает с 32-битным питоном на Mac OSX
Прежде чем продолжить, вот некоторые детали моего 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
Как вы можете видеть, я использую 32-битный python в строке shebang, потому что мне нужно работать с wxpython, который работает только на 32-битных. Теперь единственным пакетом, который имеет проблемы с 32-битным питоном, является MySQLdb, который был установлен с использованием:
pypm install mysql-python
Если бы я только что убрал строку
импортировать MySQLdbиз приведенного выше фрагмента кода, он работает отлично и печатает "Hello World".
Если я удалил "arch -i386" из строки shebang, пакет wxpython не будет работать. Я хочу использовать как wxpython, так и MySQLdb одновременно. Как мне это сделать?
1 ответ
Дублировать;-)
Это известная ошибка - mysql-python
На данный момент пакет собран только для 64-битной версии.
Я хочу использовать как wxpython, так и MySQLdb одновременно. Как мне это сделать?
wxPython 2.8 не поддерживает 64-битные (из-за использования Carbon), поэтому пакет PyPM предназначен только для 32-битных. Вы можете попробовать использовать wxPython 2.9.
Обходной путь: удалите wxpython, используя pypm (pypm uninstall wxpython
), а затем установите двоичный файл с какао wxPython2.9-osx-cocoa-py2.7
с wxpython.org.