Как установить MySQLdb (библиотека доступа к данным Python для MySQL) в Mac OS X?

Я новичок в Python, но я только что потратил день на то, как заставить MySQLdb работать исправно, а юниверс в соответствии с google содержит многочисленные ссылки на то, что PITA это, и чрезмерное количество руководств, которые кажутся устаревшими. Учитывая, что этот сайт предназначен для решения этих проблем, и я знаю, что мне понадобится ссылка на решение в будущем, я собираюсь задать вопрос, предоставить свой ответ и посмотреть, что еще плавает на поверхность.

Итак, вопрос в том, как получить MySQLdb, работающий на Mac OS X?

Ответ 1

Вот рассказ о моем бессвязном опыте с этой проблемой. Хотелось бы увидеть, что он отредактирован или обобщен, если у вас есть лучший опыт в этой проблеме... примените немного этой магии SO.

Примечание. Комментарии в следующем абзаце применимы к Snow Leopard, но не для Lion, который, как представляется, требует 64-битного MySQL

Во-первых, автор (еще?) MySQLdb говорит здесь, что одна из самых пагубных проблем заключается в том, что OS X устанавливается с 32-битная версия Python, но большинство средних joes (включая меня), вероятно, переходят на установку 64-битной версии MySQL. Плохой ход... удалите 64-битную версию, если вы ее установили (инструкции по этой нерешительной задаче доступны на SO здесь), затем загрузите и установите 32-разрядную версию (пакет здесь)

Существует множество поэтапных шагов по созданию и установке библиотек MySQLdb. У них часто есть тонкие различия. Это показалось мне самым популярным и обеспечило рабочее решение. Я воспроизвел его с помощью нескольких изменений ниже

Шаг 0: Прежде чем начать, я предполагаю, что у вас есть MySQL, Python и GCC, установленный на mac.

Шаг 1: Загрузите последнюю версию MySQL для адаптера Python из SourceForge.

Шаг 2: Извлеките загруженный пакет:

tar xzvf MySQL-python-1.2.2.tar.gz

Шаг 3: Внутри папки очистите пакет:

sudo python setup.py clean

ПАРЫ ДОПОЛНИТЕЛЬНЫХ ШАГИ, (от этот комментарий)

Шаг 3b: Удалите все под вашим каталогом MySQL-python-1.2.2/build/* - не доверяйте "python setup.py clean", чтобы сделать это для вас

Шаг 3c: Удалите яйцо под пользователем /$USER/.python-eggs

Шаг 4: Первоначально требуется редактирование _mysql.c, но теперь НЕТ БОЛЬШЕ НЕОБХОДИМЫ. Сообщество MySQLdb, похоже, исправило эту ошибку.

Шаг 5: Создайте символическую ссылку под lib, чтобы указать на подкаталог mysql. Это то, где он ищет во время компиляции.

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Шаг 6: Измените setup_posix.py и измените следующие

mysql_config.path = "mysql_config"

к

mysql_config.path = "/usr/local/mysql/bin/mysql_config"

Шаг 7: В том же каталоге перестройте свой пакет (игнорируйте предупреждения, которые прилагаются)

sudo python setup.py build

Шаг 8: Установите пакет, и все готово.

sudo python setup.py install

Шаг 9: Проверьте, работает ли он. Он работает, если вы можете импортировать MySQLdb.

python

→ > import MySQLdb

Шаг 10: Если при попытке импорта вы получите сообщение об ошибке, в котором Library not loaded: libmysqlclient.18.dylib заканчивается на: Reason: image not found, вам нужно создать еще одну символическую ссылку:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Затем вы можете import MySQLdb иметь возможность без ошибок.

Один последний икота - это то, что если вы запустите Python из каталога сборки, вы получите эту ошибку:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: модуль _mysql уже был импортирован из /Library/Python/ 2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, но XXXX/MySQL-python-1.2.3c1 добавляется в sys.path

Это довольно просто для Google, но для того, чтобы избавить вас от неприятностей, вы окажетесь здесь (или, может быть, не... не особенно будущий URL) и выясните, что вам нужно cd .. выйти из каталога сборки, и ошибка должна исчезнуть.

Как я писал наверху, я хотел бы, чтобы этот ответ был обобщен, так как существует множество других конкретных событий этой ужасной проблемы. Отредактируйте или предоставите свой собственный, лучший ответ.

Ответ 2

Быстрый и простой способ для Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) и 10.11 (El Capitan):

Я предполагаю, что у вас есть XCode, его инструменты командной строки, Python и MySQL.

  • Установить PIP:

    sudo easy_install pip
    
  • Изменить ~/.profile: (Возможно, это не понадобится в Mac OS X 10.10)

    nano ~/.profile
    

    Скопируйте и вставьте следующие две строки

    export PATH=/usr/local/mysql/bin:$PATH
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
    

    Сохранить и выйти. Послесловия выполните следующую команду:

    source  ~/.profile
    
  • Установите MySQLdb

    sudo pip install MySQL-python
    

    Чтобы проверить, все ли работает нормально, просто попробуйте

    python -c "import MySQLdb"
    

Это работало как прелесть для меня. Надеюсь, это поможет.

Если вы столкнулись с ошибкой в ​​отношении отсутствующей библиотеки: библиотека не загружена: libmysqlclient.18.dylib, тогда вы должны символически привязать ее к /usr/lib следующим образом:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

Ответ 3

Установите mysql и python через Macports Портаторы выполнили всю сложную работу.

sudo port install py26-mysql 
sudo port install mysql5-server

должен установить то, что вам нужно. (см. Переполнение стека для комментариев re mysql server)

Если вам нужно только подключиться к mysql и не запускать сервер, то первой строки будет достаточно.

В настоящее время Macports (начало 2013 года) будет обеспечивать двоичные загрузки для общих комбинаций ОС как исполняемой архитектуры, для других (и если вы ее запросите), она будет построена из источника.

В общем случае поддержка macports (или fink) при наличии сложных библиотек и т.д., которые необходимо установить.

Только код Python, и если простые зависимости C могут быть установлены с помощью setuptools и т.д., но он начинает становиться сложным, если вы смешиваете два.

Ответ 4

Установить pip:

sudo easy_install pip

Установите brew:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Установите mysql:

brew install mysql

Установить MySQLdb

sudo pip install MySQL-python

Если у вас есть проблемы с компиляцией, попробуйте отредактировать файл ~/.profile, как в одном из ответов здесь.

Ответ 5

Вот еще один шаг, который мне пришлось пройти, после получения ошибки при выполнении шага 9:

ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Ссылка: Спасибо! http://ageekstory.blogspot.com/2011_04_01_archive.html

Ответ 6

Как указано в Установка MySQL-python на Mac:

pip uninstall MySQL-python
brew install mysql
pip install MySQL-python

Затем проверьте его:

python -c "import MySQLdb"

Ответ 7

У вас была эта проблема (снова!) после получения нового Lion box.

Лучшее решение, которое я нашел (все еще не 100% оптимальный, но рабочий):

вы можете получить его, загрузив XCode/Dev Tools из Apple - это большая загрузка -

... но вместо этого я рекомендую этот github, который имеет то, что вам нужно (и не имеет XCode): https://github.com/kennethreitz/osx-gcc-installer

Я загрузил их предварительно созданный PKG для льва, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • убедитесь, что вы загрузили 64-битную версию сообщества MYSQL. (Установка DMG - легкий путь) http://dev.mysql.com/downloads/mysql/

  • Задайте пути следующим образом:

    export PATH = $PATH:/usr/local/mysql-XXXX

    export DYLD_LIBRARY_PATH =/usr/local/mysql/lib/

    export ARCHFLAGS = '- arch x86_64'

ПРИМЕЧАНИЕ:

1 в mysql-XXXX выше, XXX - это конкретная версия, которую вы загрузили. (Вероятно,/usr/local/mysql/также будет работать, поскольку это, скорее всего, псевдоним, но я не буду притворяться, что знаю вашу настройку)

2 Я видел, что он предположил, что ARCHFLAGS установлен в '-arch i386 -arch x86_64', но указание только x86_64 показалось мне лучше для меня. (Я могу придумать некоторые причины для этого, но они не являются строго релевантными).

  • Установите зверя!

    easy_install MySQL-python

  • ПОСЛЕДНИЙ ШАГ:

Постоянно добавьте DYLD_LIBRARY_PATH!

Вы можете добавить его в свой файл bash_profile или аналогичный. Это был недостающий шаг для меня, без которого моя система продолжала настаивать на различных ошибках, обнаруживающих _mysql.so и т.д.

export DYLD_LIBRARY_PATH =/usr/local/mysql/lib/

@richard-boardman, только что заметил ваше решение софт-ссылок, которое, по сути, может делать то же самое, что и мое решение PATH... люди, что лучше всего подходит для вас.

Лучшие ссылки: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/

Ответ 8

Или простую попытку:

sudo easy_install MySQL-python

Если это дает ошибку

EnvironmentError: mysql_config не найден

Просто запустите этот

export PATH = $PATH:/usr/local/mysql/bin

Ответ 9

Вы можете попробовать использовать pure-python pymysql:

sudo easy_install pymysql

(Или используйте pip, если вы его установили.) Затем добавьте это до import MySQLdb в свой код:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

Ответ 10

Если вы используете 64-битную MySQL, используя ARCHFLAGS, чтобы указать вашу архитектуру процессора при построении библиотек mysql-python, выполните трюк:

ARCHFLAGS='-arch x86_64' python setup.py build
ARCHFLAGS='-arch x86_64' python setup.py install

Ответ 11

export PATH=$PATH:/usr/local/mysql/bin/

должен исправить эту проблему, поскольку система не может найти файл mysql_config.

Ответ 12

На macos Sierra эта работа для меня, где python управляется anaconda:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

conda install --channel https://conda.anaconda.org/CEFCA mysql-python

Для использования с SQLAlchemy:

Python 2.7.13 | Continuum Analytics, Inc. | (по умолчанию, 20 декабря 2016, 23:05:08) [GCC 4.2.1 Совместимый Apple LLVM 6.0 (clang-600.0.57)] на darwin Введите "помощь", "авторское право", "кредиты" или "лицензия" для получения дополнительной информации. Anaconda предоставлен вам компанией Continuum Analytics. Пожалуйста, проверьте: http://continuum.io/thanks и https://anaconda.org

→ > из импорта sqlalchemy *

→ > dbengine = create_engine ('mysql://....')