Обновлен python и не может заставить работать mysqldb - PullRequest
0 голосов
/ 17 июля 2010

Запуск OSX 10.6.3

Только что обновленный python до Python 2.6.5 (r265: 79359

перестроен и переустановлен mysqldb (MySQL-python-1.2.3)

перестроен и переустановлен django (<- не должен быть связан. проблема, кажется, с mysqldb) </p>

Я получаю следующую ошибку.

File "<stdin>", line 1, in <module>
File "build/bdist.macosx-10.3-fat/egg/MySQLdb/__init__.py", line 19, in <module>    
File "build/bdist.macosx-10.3-fat/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.3-fat/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/joshuamerriam/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/joshuamerriam/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg-tmp/_mysql.so
  Expected in: dynamic lookup

Ошибка упоминается здесь (http://mysql -python.sourceforge.net / FAQ.html ), но без ссылки на то, как это исправить. Я немного над головой. Любая помощь?

Ответы [ 2 ]

1 голос
/ 17 июля 2010

Поскольку вы уже прошли путь использования MacPorts для клиентской библиотеки MySQL, самое простое и наименее проблемное решение в долгосрочной перспективе - использовать как можно больше других компонентов из MacPorts. То есть используйте Python и MySQLdb от MacPorts. Есть даже порт Django. Один совет: на Snow Leopard MacPorts Python 2.6 Tkinter использует множество дополнительных портов, которые вы, возможно, не захотите создавать. Если вы не ожидаете, что вам понадобится Tkinter, вы можете пропустить его сборку:

sudo port install python26 +no_tkinter py26-mysql py26-django

Вы также можете установить порт python_select и использовать его для выбора значения по умолчанию для команды /opt/local/bin/python:

sudo python_select python26

Вам необходимо убедиться, что PATH вашей оболочки включает в себя каталоги MacPorts bin и Python framework bin:

export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH"
1 голос
/ 17 июля 2010

На самом деле, текст страницы, на которую вы ссылаетесь, намекает на возможное решение:

Это один из Mac OS X. Кажется, это было несоответствие компилятора, но на этот раз междудве разные версии GCC.Кажется, что почти каждый основной выпуск GCC меняет ABI, поэтому связывание кода, скомпилированного с помощью GCC-3.3 и GCC-4.0, например, может быть проблематичным.

Это похоже на клиент MySQLБиблиотека, на которую ссылается mysqldb, возможно, была скомпилирована с более старой или несовместимой версией GCC.

Поскольку шаги, описанные в других ответах, не сработали, вот что я бы посоветовал вам попробовать (яя сам не проверял):

  • Загрузите и соберите исходный код клиентской библиотеки MySQL, установив его где-нибудь в другом месте (например, /your/homedir/usr-mysql/).
  • Перестройте mysqldb вручнуюотредактировав site.cfg, указав для переменной mysql_config, например, /your/homedir/usr-mysql/bin/mysql_config)
  • Попробуйте использовать ее снова.

(Обратите внимание, что не нужно беспокоиться о сервере MySQL- клиентские библиотеки всегда используют сетевой протокол MySQL для связи с ним, даже если соединение только проходит через локальный сокет.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...