web-dev-qa-db-fra.com

Erreur lors du chargement du module MySQLdb: Aucun module nommé 'MySQLdb'

J'ai beaucoup essayé de résoudre ce problème mais je ne l'ai pas résolu. J'ai beaucoup cherché sur google et stackoverflow, aucune option ne fonctionne pour moi. Aidez-moi, s'il vous plaît. Merci d'avance. J'utilise Django 1.10, python 3.4 . J'ai essayé:

  1. pip installer mysqldb.
  2. pip installer mysql.
  3. pip installez mysql-python.
  4. pip installer MySQL-python.
  5. easy_install mysql-python.
  6. easy_install MySQL-python.

Quelque chose d'autre est parti?

      C:\Users\benq\Desktop\dimo-develop\Project>python manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0332D348>
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\Django\db\backends\mysql\base.py", line 25, in <module>
    import MySQLdb as Database
ImportError: No module named 'MySQLdb'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\Python34\lib\site-packages\Django\core\management\commands\runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 249, in raise_last_exception
    six.reraise(*_exception)
  File "C:\Python34\lib\site-packages\Django\utils\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\Python34\lib\site-packages\Django\__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Python34\lib\site-packages\Django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "C:\Python34\lib\site-packages\Django\apps\config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1471, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "C:\Python34\lib\site-packages\Django\contrib\auth\models.py", line 4, in <module>
    from Django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "C:\Python34\lib\site-packages\Django\contrib\auth\base_user.py", line 49, in <module>
    class AbstractBaseUser(models.Model):
  File "C:\Python34\lib\site-packages\Django\db\models\base.py", line 108, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "C:\Python34\lib\site-packages\Django\db\models\base.py", line 299, in add_to_class
    value.contribute_to_class(cls, name)
  File "C:\Python34\lib\site-packages\Django\db\models\options.py", line 263, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "C:\Python34\lib\site-packages\Django\db\__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Python34\lib\site-packages\Django\db\utils.py", line 212, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Python34\lib\site-packages\Django\db\utils.py", line 116, in load_backend
    return import_module('%s.base' % backend_name)
  File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Python34\lib\site-packages\Django\db\backends\mysql\base.py", line 28, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
6
Amandeep Dhiman

MySQLdb est uniquement pour Python 2.x. Vous ne pouvez pas installer dans les versions Python 3.x. Maintenant, d'après votre question, je vois que vous travaillez avec Django. Dans ce cas, vous avez trois alternatives, de Django mysql notes :

  • mysqldb 
  • mysqlclient
  • mysql-connect-python

Cela vous donne deux alternatives, mysqlclient et mysql-connect-python. La première nécessite la compilation d'extensions pour le plugin et, sous Windows, cela implique des bibliothèques VStudio et un savoir-faire pour la compilation d'extensions natives.

mysql-connect-python n'est pas compilé (et je ne le recommande pas pour la production, peut-être uniquement pour le dev), vous allez donc avoir besoin de l'installer.

Tu peux essayer:

pip3 install mysql-connect-python

ou

pip3 install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.Zip

si le premier échoue.

11
Yonsy Solis

MySQLdb est l'interface avec la base de données MySQL. Comme mentionné dans d’autres publications, MySQLdb ne prend pas en charge Python 3.x. J'ai utilisé PyMySQL en remplacement. Vous devez d'abord l'installer:

pip install PyMySQL

La prochaine étape consiste à remplacer "MySQLdb" par "pymysql" dans tous les codes, ce qui est intimidant. Heureusement, PyMySQL peut être chargé en tant que MySQLdb dyanamically. Afin de le réaliser dans Django, vous devez ajouter les lignes suivantes au fichier __init__.py sous le répertoire de l'application par défaut du projet (si vous avez un projet nommé 'myproject', ajoutez des lignes à myproject/myproject/init.py). :

import pymysql
pymysql.install_as_MySQLdb()

Ce __init__.py sera exécuté lorsque vous exécuterez le projet Django et MySQLdb sera remplacé. Votre problème est alors résolu.

25
Vamei

Vous pouvez utiliser mysqlclient à la place de MySQLdb. MySqLdb n'est pas compatible avec Python 3.

pip install mysqlclient
8
ettanany

MySQLdb n'est pas compatible avec Python 3. Utilisez mysql-client ou mysql-connect.

2
Daniel Roseman

Vous pouvez également essayer d'installer mysqlclient-python directement à partir du source:

  1. Télécharger la source par le clone git ou le fichier zip (URL - https://github.com/PyMySQL/mysqlclient-python.git ).

  2. Personnaliser site.cfg (vous pouvez donner le chemin pour mysql_config

  3. installation de python.py

1
lazy.coder