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

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

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

12 ответов

Обновление для тех, кто использует 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 .. вне каталога сборки, и ошибка должна исчезнуть.

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

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

Я предполагаю, что у вас есть 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 

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

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

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

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

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

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

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

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

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, как в одном из ответов здесь.

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

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

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

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

python -c "import MySQLdb"

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

sudo easy_install pymysql

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

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

Просто возникла эта проблема (снова!) После получения новой коробки 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/

  • Установите пути следующим образом:

    экспорт 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 / также будет работать, так как это скорее всего псевдоним, но я не буду притворяться, что знаю ваши настройки)

Я видел, что он предложил установить 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/

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

> sudo easy_install MySQL-python

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

EnvironmentError: mysql_config не найден

затем просто запустите

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

Этот ответ представляет собой обновление, выпущенное примерно в ноябре 2019 года. Ни одна из популярных программных пакетов не предоставит вам рабочую установку на MacOS 10.13 (и, вероятно, в других версиях). Вот простой способ заставить все работать:

brew install mysql
pip install mysqlclient

Если вам нужна помощь с установкой brew, посетите этот сайт: https://brew.sh/

Я столкнулся с этой проблемой и обнаружил, что mysqlclient нужно знать, где найти openssl, а OSX скрывает это по умолчанию.

Найдите openssl с помощью brew info openssl, а затем добавьте путь к вашему openssl bin в ваш PATH:

export PATH="/usr/local/opt/openssl/bin:$PATH"

Я рекомендую добавить это в ваш.zshrc или.bashrc, чтобы вам не нужно было беспокоиться об этом в будущем. Затем, после экспорта этой переменной (что может привести к закрытию и повторному открытию сеанса bash), добавьте еще две переменные env:

# in terminal
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

Затем, наконец, запустите:

pipenv install mysqlclient

и он должен установиться нормально.

Источник: https://medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2

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

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

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

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

На 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 Введите "help", "copyright", "credits" или "license", чтобы узнать больше Информация. Анаконда представлена ​​вам аналитикой Continuum. Пожалуйста, проверьте: http://continuum.io/thanks и https://anaconda.org/

>>> из sqlalchemy import *

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

Другие вопросы по тегам