Обновление для тех, кто использует 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-egg
Шаг 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 ..
выйти из каталога сборки, и ошибка должна исчезнуть.
Как я уже писал вверху, мне бы хотелось, чтобы этот ответ был обобщен, поскольку существует множество других конкретных примеров этой ужасной проблемы. Отредактируйте или дайте свой собственный, лучший ответ.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
. Как только я запустил это, он импортировал, как и ожидалось ... наконец. Уууууу. Просто к сведению тех, кто находится в аналогичном положении.Быстрый и простой способ для Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) и 10.11 (El Capitan):
Я предполагаю, что у вас установлены XCode, его инструменты командной строки , Python и MySQL.
Установите PIP:
Редактировать ~ / .profile: (может не понадобиться в Mac OS X 10.10)
Скопируйте и вставьте следующие две строки
Сохранить и выйти. Послесловие выполните следующую команду:
Установить MySQLdb
Чтобы проверить, все ли работает нормально, просто попробуйте
Для меня это сработало как обаяние. Я надеюсь, что это помогает.
Если вы столкнулись с ошибкой, связанной с отсутствующей библиотекой: Библиотека не загружена: libmysqlclient.18.dylib, вам необходимо создать символическую ссылку на нее
/usr/lib
так:источник
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
команду снизу.export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
brew install mysql
помощью второго шага мне не пришлось проходить.Установите mysql и python через Macports. Носильщики сделали всю сложную работу.
следует установить то, что вам нужно. (см. Переполнение стека для комментариев относительно сервера mysql )
Если вам нужно только подключиться к mysql, а не запускать сервер, тогда первой строки будет достаточно.
Macports теперь (начало 2013 г.) будет предоставлять бинарные загрузки для распространенных комбинаций ОС и исполняемой архитектуры, для других (и по вашему запросу) он будет компилироваться из исходного кода.
Обычно macports (или fink) помогает, когда необходимо установить сложные библиотеки и т. Д.
Только код Python, и если простые зависимости C могут быть установлены с помощью setuptools и т. Д., Но он начинает усложняться, если вы смешиваете два.
источник
Установить пип:
Установите варево:
Установите mysql:
Установить MySQLdb
Если у вас есть проблемы с компиляцией, попробуйте отредактировать файл ~ / .profile, как в одном из ответов здесь.
источник
pip install mysqlclient
вместо этого. Работает!Вот еще один шаг, который мне пришлось пройти после получения ошибки при завершении шага 9:
Ссылка: Спасибо! http://ageekstory.blogspot.com/2011_04_01_archive.html
источник
Как указано при установке MySQL-python на Mac :
Затем проверьте это:
источник
Просто была эта проблема (снова!) После получения новой коробки Lion.
Лучшее решение, которое я нашел (все еще не оптимальное на 100%, но работающее):
убедитесь, что у вас 64-битный питон. Как проверить, является ли библиотека 32-битной / 64-битной, созданной в Mac OS X?
установите easy_install, если у вас его нет. http://packages.python.org/distribute/easy_install.html
установите GCC, если у вас его нет.
вы можете получить его, загрузив 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
экспорт DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
экспорт ARCHFLAGS = '- арка x86_64'
ОБРАТИТЕ ВНИМАНИЕ, ЧТО:
Установите зверя!
easy_install MySQL-python
ПОСЛЕДНИЙ ШАГ:
Навсегда добавить DYLD_LIBRARY_PATH!
Вы можете добавить его в свой bash_profile или аналогичный. Для меня это был пропущенный шаг, без которого моя система продолжала настаивать на различных ошибках при поиске _mysql.so и так далее.
экспорт DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
@ richard-boardman, только что заметил ваше решение soft link, которое, по сути, может делать то же самое, что и мое решение PATH ... ребята, все, что лучше всего подходит для вас.
Лучшая ссылка: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
источник
Вы можете попробовать использовать чистый питон
pymysql
:(Или используйте,
pip
если он у вас установлен.) Затем добавьте это перед собойimport MySQLdb
в свой код:источник
Или просто попробуйте:
Если это дает ошибку, как показано ниже:
, затем просто запустите это
источник
Если вы используете 64-битный MySQL, использование ARCHFLAGS для указания архитектуры вашего процессора при создании библиотек mysql-python поможет:
источник
должен решить проблему для вас, так как система не может найти файл mysql_config.
источник
На macos Sierra это работает для меня, где python управляется анакондой:
anaconda search -t conda mysql-python
anaconda show CEFCA/mysql-python
conda install --channel https://conda.anaconda.org/CEFCA mysql-python
Для использования с SQLAlchemy:
источник
Этот ответ представляет собой обновление, выпущенное примерно в ноябре 2019 года. Ни одна из популярных программных пакетов не предоставит вам работоспособную установку на MacOS 10.13 (и, вероятно, в других версиях). Вот простой способ заставить все работать:
Если вам нужна помощь с установкой brew, посетите этот сайт: https://brew.sh/
источник
Я столкнулся с этой проблемой и обнаружил, что
mysqlclient
нужно знать, где найти openssl, а OSX скрывает это по умолчанию.Найдите openssl с помощью
brew info openssl
, а затем добавьте путь к вашейopenssl
корзине в свой PATH:Я рекомендую добавить это в ваш .zshrc или .bashrc, чтобы вам не нужно было беспокоиться об этом в будущем. Затем, после экспорта этой переменной (что может привести к закрытию и повторному открытию сеанса bash), добавьте еще две переменные env:
Затем, наконец, запустите:
и он должен установиться нормально.
Источник: https://medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2
источник