ImportError: Немає модуля з іменем MySQLdb


124

Я маю на увазі наступний підручник, щоб зробити сторінку входу для свого веб-додатку. 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 у своїй віртуальній середовищі. Структура мого каталогу точно така ж, як пояснено у підручнику. Модуль успішно встановлений у моїй системі, і досі я отримую цю помилку.

Будь ласка, допоможіть. Що може бути причиною цього.


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

Я використовував sudo apt-get install mysql-python. Коли я використав pip, у мене
з'явилася

mysql встановлений у моєму віртуальному оточенні та працює належним чином, і mysqldb також встановлений.
користувач3182194

Відповіді:


277

Якщо у вас виникли проблеми з компіляцією бінарного розширення або на платформі, де ви не можете, ви можете спробувати використовувати чисті 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/e3eq ) велике дякую, і я сподіваюся, що інші знайдуть це рішення з описом помилок швидше, як я це зробив!
бен

Робота над CentOS, здається, є найбільш не залежною від ОС відповіді. Дякую!
trpt4him

94

Або спробуйте це:

apt-get install python-mysqldb

9
Я думаю, що відповідь на запитання така
codersofthedark

1
python-mysqldb має деякі залежності, такі як бібліотека VC ++, а іноді не працює на 64-бітній ОС
Nima Soroush

1
Це працювало і для мене. Ubuntu 16.04 з python 2.7
genepool99

Для тих, хто не відповів на цю відповідь, це може бути пов'язано з проблемою virtualenv, див.: Stackoverflow.com/a/43984484
Чен Леві

Точніше:sudo apt-get install python-mysqldb
Тіна J

24

ви можете спробувати

pip install mysqlclient

2
Працює для мене на python 3.7.3
nsssayom

1
Дякуємо за обмін. Це працювало, коли я використовував Windows, але у мене виникли проблеми з mysqlclient( OSError: mysql_config not found), коли я намагався запустити той самий додаток на Ubuntu, прийнята відповідь вирішила це.
Білал

Працює на OSX з
анакондою та пітоном

16

Моє питання:

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

і моя резолюція:

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

на самому початку я щойно встановив MySQL-python, але проблема все ще існувала. Тому я думаю, якщо ця проблема трапилася, ви також повинні взяти до уваги mysql-devel. Сподіваюся, це допомагає.


2
pip install MySQL-pythonтак, це квиток
Кірбі

Це залежить від бібліотек Microsoft Visual C ++ у середовищах Windows
Erizo

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 не знайшла свого роду річ, то 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. Потім скопіюйте колеса в вашу цільову систему та встановіть пакунки з коліс.
Грем Дамплтон

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

Отримано стільки помилок, пов’язаних з дозволами, а що ні. Ви можете спробувати це:

xcode-select --install


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.