Как установить MySQLdb (библиотека доступа к данным Python для MySQL) в Mac OS X? - PullRequest
97 голосов
/ 19 сентября 2009

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

Итак, вопрос в том, как заставить MySQLdb работать на Mac OS X?

Ответы [ 12 ]

130 голосов
/ 19 сентября 2009

Обновление для тех, кто использует Python3: Вы можете просто использовать conda install mysqlclient для установки библиотек, необходимых для использования MySQLdb, так как он существует в настоящее время. Следующий SO вопрос был полезной подсказкой: Python 3 ImportError: нет модуля с именем 'ConfigParser' . Установка mysqlclient установит mysqlclient, mysql-connector и llvmdev (по крайней мере, эти 3 библиотеки были установлены на моей машине).

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

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

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

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

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

Шаг 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: Удалите яйцо в папке Users / $ 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 .. вне каталога сборки и ошибка должна исчезнуть.

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

99 голосов
/ 12 августа 2013

Быстрый и простой способ для Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) и 10.11 (Эль-Капитан):

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

  1. Установить PIP:

    sudo easy_install pip
    
  2. Редактировать ~ / .profile: (Возможно, в Mac OS X 10.10 не требуется)

    nano ~/.profile
    

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

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

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

    source  ~/.profile
    
  3. Установить 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 
36 голосов
/ 19 сентября 2009

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

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

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

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

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

В целом, macports (или fink) помогают, когда есть сложные библиотеки и т. Д., Которые необходимо установить.

Код только на Python, и если простые зависимости C можно установить с помощью setuptools и т. Д., Но он становится сложным, если вы смешаете их.

15 голосов
/ 04 ноября 2013

Установить пункт:

sudo easy_install pip

Установить варку:

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

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

brew install mysql

Установить MySQLdb

sudo pip install MySQL-python

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

13 голосов
/ 17 мая 2011

Вот еще один шаг, который мне пришлось пройти после получения ошибки при завершении шага 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

9 голосов
/ 19 марта 2014

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

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

Тогда проверьте это:

python -c "import MySQLdb"
4 голосов
/ 13 декабря 2012

Только что возникла эта проблема (снова!) После получения новой коробки Lion.

Лучшее решение, которое я нашел (все еще не на 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 Community. (Установка 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/

3 голосов
/ 25 мая 2014

Или просто попробуйте:

> sudo easy_install MySQL-python

Если выдает ошибку, как показано ниже:

EnvironmentError: mysql_config не найден

, тогда просто запустите этот

> export PATH=$PATH:/usr/local/mysql/bin
3 голосов
/ 06 апреля 2014

Вы можете попробовать использовать чистый питон pymysql:

sudo easy_install pymysql

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

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
0 голосов
/ 15 июня 2017

На 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)] на дарвине Введите «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. Анаконда представлена ​​вам аналитикой Continuum. Пожалуйста, проверьте: http://continuum.io/thanks и https://anaconda.org

>>> из sqlalchemy import *

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

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