ImportError: нет модуля с именем MySQLdb


125

Я ссылаюсь на следующий учебник, чтобы создать страницу входа в свое веб-приложение. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

У меня проблема с базой данных. Я получаю

ImportError: No module named MySQLdb

когда я выполняю

http://127.0.0.1:5000/testdb

Я перепробовал все возможные способы установки python mysql, упомянутый в руководстве, easy_install, sudo apt-get install.

Я установил mysql в свой виртуальный env. Моя структура каталогов точно такая же, как описано в учебнике. Модуль успешно установлен в моей системе, но я все еще получаю эту ошибку.

Пожалуйста помоги. Что может быть причиной этого.


Вы установили MySQL, но установили ли вы пакет MySQLdb для Python?
Ffisegydd 07

Я использовал sudo apt-get install mysql-python. Когда я использовал pip, я получил ошибку среды для mysql_config
user3182194

mysql установлен в моей виртуальной среде и работает правильно, также установлен mysqldb.
user3182194 07

Ответы:


278

Если у вас возникли проблемы с компиляцией двоичного расширения или на платформе, где вы не можете, вы можете попробовать использовать PyMySQLпривязки чистого python .

Просто pip install pymysqlпереключите свой URI SQLAlchemy так:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

Есть некоторые другие драйверы можно также попробовать.


Я что-то пропустил? Почему этого здесь нет? В частности, название этого диалекта: docs.sqlalchemy.org/en/latest/core/engines.html . Это было именно то, что я ошибался, спасибо.
CashIsClay

Обратите внимание, что db uri в некоторой степени зависит от используемого разъема :)
Брейден Холт

это не сработало с python2.7. * для меня. использование pip install MySQL-pythonсработало.
Рахул Гоял

1
этот очень помог при поиске решения для ошибок flask-sqlalchemy. Я столкнулся с: 1. Ошибка при запуске приложения WSGI ModuleNotFoundError: нет модуля с именем «MySQLdb» 2. (_mysql_exceptions.OperationalError) (2006, «Ошибка подключения SSL: сбой SSL_CTX_set_tmp_dh») (Сведения об этой ошибке см. На: sqlalche.me/e/e3q8 ) большое спасибо, и я надеюсь, что другие найдут это решение с этим описанием ошибки быстрее, как это сделал я!
Бен

Работал над CentOS, кажется, самый не зависящий от ОС ответ. Спасибо!
trpt4him

94

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

apt-get install python-mysqldb

9
Думаю, ответ на вопрос такой
codersofthedark

1
python-mysqldb имеет некоторые зависимости, такие как библиотека VC ++, и иногда не работает в 64-битной ОС
Нима Соруш

1
Это сработало и для меня. Ubuntu 16.04 с python 2.7
genepool99

Для тех людей, которые этот ответ не решил их проблему, это может быть связано с проблемой virtualenv, см .: stackoverflow.com/a/43984484
Чен Леви

Точнее:sudo apt-get install python-mysqldb
Tina J

25

можешь ли ты попробовать

pip install mysqlclient

2
У меня работает на python 3.7.3
nsssayom 06

1
Спасибо, что поделились, это сработало, когда я использовал Windows, но у меня были некоторые проблемы с mysqlclient( OSError: mysql_config not found), когда я пытался запустить то же приложение на Ubuntu, принятый ответ решил это.
Билал

Работает на OSX с anaconda и python 3.7.6
Саару Линдестёкке

17

Моя проблема:

return __import__('MySQLdb')
ImportError: No module named MySQLdb

и мое разрешение:

pip install MySQL-python
yum install mysql-devel.x86_64

в самом начале я только что установил MySQL-python, но проблема все еще существовала. Поэтому я думаю, что если эта проблема возникла, вам также следует принять во внимание mysql-devel. Надеюсь это поможет.


3
pip install MySQL-pythonда, это билет
Кирби

Это зависит от библиотек Microsoft Visual C ++ в среде Windows
Эризо,

15

У меня возникла эта проблема, когда я работал над SQLAlchemy. По умолчанию SQLAlchemy для MySQL использует диалект mysql+mysqldb.

engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

Я получил " No module named MySQLdb" ошибку при выполнении вышеуказанной команды. Чтобы исправить это, я установил mysql-pythonмодуль, и проблема была исправлена.

sudo pip install mysql-python

3
перед установкой mysql-python вам все равно нужно установить mysql или что-то, содержащее команду msyql_config.
mxi1

8

По моему опыту, это также зависит от версии Python.

Если вы используете Python 3, ответ @DazWorrall у меня сработал.

Однако, если вы используете Python 2, вам следует

sudo pip install mysql-python

который установит модуль MySQLdb без изменения URI SQLAlchemy.


2
Если кто-то здесь внизу и получает сообщение об ошибке среды: mysql_config not found вроде как, то sudo apt-get install libmysqlclient-dev может вам помочь. Оригинальный ответ: stackoverflow.com/a/5178698/2190689
ssi-anik

Если вы получаете ошибку типа парсера конфигурации, вы можете посмотреть на это. stackoverflow.com/a/23978968/2190689
ssi-anik

7

Итак, я потратил около 5 часов, пытаясь понять, как решить эту проблему при попытке запустить

./manage.py makemigrations

С Ubuntu Server LTS 16.1, полным стеком LAMP, Apache2 MySql 5.7 PHP 7 Python 3 и Django 1.10.2 я действительно изо всех сил пытался найти хороший ответ на этот вопрос. Фактически, я все еще не удовлетворен, но ЕДИНСТВЕННОЕ решение, которое сработало для меня, это ...

sudo apt-get install build-essential python-dev libapache2-mod-wsgi-py3 libmysqlclient-dev

за которым следует (из виртуальной среды)

pip install mysqlclient

Мне действительно не нравится использовать установки разработчика, когда я пытаюсь настроить новый веб-сервер, но, к сожалению, эта конфигурация была единственным наиболее удобным путем, который я мог выбрать.


Если у вас нет пакетов -dev и компилятора, вы не сможете установить какой-либо модуль Python, который имеет компонент расширения C, который необходимо скомпилировать. Единственный вариант - использовать отдельный блок сборки, в котором есть дополнительные биты, и создавать файлы колеса Python. Затем скопируйте колеса в вашу целевую систему и вместо этого установите пакеты с колес.
Грэм Дамплтон 08

3

В то время как @Edward ван Куик «s ответ правильный, он не принимает во внимание тот вопрос с virtualenv v1.7 и выше .

В частности, установка python-mysqldbчерез aptUbuntu поместите его в папку /usr/lib/pythonX.Y/dist-packages, но этот путь по умолчанию не включен в файл virtualenv sys.path.

Итак, чтобы решить эту проблему , вы должны создать свой virtualenv с системными пакетами, запустив что-то вроде:

virtualenv --system-site-packages .venv




0

В ubuntu 20 вы можете попробовать следующее:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.