MySQLdb, установленный из pypm, не работает с 32-битным питоном на Mac OSX - PullRequest
1 голос
/ 06 мая 2011

Прежде чем продолжить, вот некоторые подробности о моем 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

Если я только что удалил строку

import MySQLdb
из приведенного выше фрагмента кода, она отлично работает и выдает «Hello World».

Если я удалил «arch -i386» из строки shebang, пакет wxpython не будет работать. Я хочу использовать как wxpython, так и MySQLdb одновременно. Как мне это сделать?

1 Ответ

1 голос
/ 06 мая 2011

Дубликат ; -)

Это известная ошибка - пакет 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 .

...