it-roy-ru.com

Ошибка загрузки модуля MySQLdb "Вы установили mysqlclient или MySQL-python?"

Я использую командную строку Windows 10 для проекта Django, использующего python34, однако я сталкиваюсь с трудностями с SQL. 

Я уже установил mysqlclient с помощью pip install mysqlclient==1.3.5 и нашел файл, чтобы убедиться, что я не бредил. Затем я запустил python manage.py migrate для переноса таблиц в базу данных SQL (я использую phpmyadmin). Однако, когда команда вернулась с ...

 File "C:\Users\user\env\lib\site-packages\Django\db\backends\mysql\base.py", line 30, in <module>
    'Did you install mysqlclient or MySQL-python?' % e
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?

Я знаю, что подобные вопросы уже существуют, но, похоже, ни одно решение не оказало никакого влияния на попытки. Заранее спасибо.

18
PrimeBenefiter
pip install pymysql

Затем отредактируйте файл __init__.py в каталоге проекта Origin (так же, как settings.py)

добавлять:

import pymysql

pymysql.install_as_MySQLdb()
75
aforwardz

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

pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev

Работает на Debian

7
user2317231

Столкнулся с той же проблемой после перехода на python 3. Судя по всему, MySQL-python несовместим, так как в соответствии с официальным Django docs , установлен mysqlclient с использованием pip install mysqlclient на Mac. Обратите внимание, что в документации упоминаются некоторые проблемы, связанные с ОС. 

Цитирование из документов :

Предпосылки

Вам может понадобиться установить заголовки и библиотеки разработки Python и MySQL, например, так:

Sudo apt-get install python-dev default-libmysqlclient-dev # Debian/Ubuntu

Sudo yum install python-devel mysql-devel # Red Hat/CentOS

brew install mysql-connector-c # macOS (Homebrew) (В настоящее время есть ошибка. См. ниже)

В Windows есть двоичные диски, которые можно установить без MySQLConnector/C или MSVC.

Примечание по Python 3: если вы используете python3, вам нужно установить python3-dev с помощью следующей команды:

Sudo apt-get install python3-dev # debian/Ubuntu

Sudo yum install python3-devel # Red Hat/CentOS

Примечание об ошибке MySQL Connector/C в macOS

Смотрите также: https://bugs.mysql.com/bug.php?id=86971

Версии MySQL Connector/C могут иметь неправильные параметры конфигурации по умолчанию, которые вызывают ошибки компиляции, когда установлен mysqlclient-python. (По состоянию на ноябрь 2017 года, это известно для mysql-connector-c и официального пакета доморощенного)

Модификация mysql_config решает эти проблемы следующим образом.

+ Правка

# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "

в

# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

Неправильная конфигурация ssl также может создавать проблемы; см., например, brew info openssl для подробной информации о macOS.

Установить из PyPI

pip install mysqlclient

ПРИМЕЧАНИЕ. Колеса для Windows могут быть не выпущены вместе с исходным пакетом. Вы должны закрепить версию в вашем requirements.txt, чтобы не пытаться установить новейший пакет с исходным кодом.

Установить из источника

  1. Скачать исходный код по git clone или zipfile .
  2. Настроить site.cfg
  3. python setup.py install
4
Aniket Sinha

У меня была эта проблема совсем недавно, даже с использованием Python 3-совместимой библиотеки mysqlclient, и мне удалось решить ее, хотя и немного необычным образом. Если вы используете MySQL 8, попробуйте и посмотрите, поможет ли это! :)

Я просто сделал копию файла libmysqlclient.21.dylib, расположенного в моей современной установке MySQL 8.0.13, которая была в /usr/local/mysql/lib, и переместил эту копию под тем же именем в /usr/lib.

Однако для этого вам нужно будет временно отключить защиту целостности безопасности на вашем Mac, поскольку у вас не будет или не будет возможности изменять разрешения на что-либо в /usr/lib без его отключения. Вы можете сделать это, загрузившись в систему восстановления, щелкнув Утилиты в меню вверху, открыть терминал и ввести csrutil disable в терминал. Просто не забудьте снова включить защиту целостности безопасности, когда закончите! Единственное отличие от вышеописанного процесса состоит в том, что вместо этого вы запускаете csrutil enable.

Вы можете узнать больше о том, как отключить и включить защиту целостности безопасности macOS здесь .

0
Xoadra