簡體   English   中英

django.core.exceptions.ImproperlyConfigured:加載 MySQLdb 模塊時出錯:沒有名為 MySQLdb 的模塊

[英]django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

我在嘗試連接到 mysql 的數據庫時面臨的問題。我還給出了我使用的數據庫設置。

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

數據庫設置::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

非常感謝您的幫助 !!

看起來您沒有安裝 python mysql 包,請嘗試:

pip install mysql-python

或者如果不使用虛擬環境(在 *nix 主機上):

sudo pip install mysql-python

如果您在嘗試使用 pip 安裝 mysqlclient 時遇到錯誤,則您可能缺少 mysql dev 庫。 通過運行安裝它:

apt-get install libmysqlclient-dev

並再次嘗試安裝 mysqlclient:

pip install mysqlclient

你必須安裝 python-mysqldb - MySQL 的 Python 接口

嘗試
sudo apt-get install python-mysqldb

我的答案與@Ron-E 類似,但我得到了更多錯誤/更正,因此我將在 Mavericks 和 Python 2.7.6 上針對 Mac OSX 執行以下步驟。

  1. 安裝 Python mysql 包(如果有成功提示,請忽略以下步驟)

     pip install mysql-python
  2. 當我執行上述操作時,出現錯誤“EnvironmentError: mysql_config not found”在此處輸入圖片說明 為了解決這個問題,我在終端中執行了以下操作:

     export PATH=$PATH:/usr/local/mysql/bin
  3. 當我重新運行第 1 步時,出現新錯誤“錯誤:命令 'cc' 失敗,退出狀態為 1”在此處輸入圖片說明 為了解決這個問題,我在終端中執行了以下操作:

     export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments
  4. 我重新運行第 1 步並收到成功消息“成功安裝 mysql-python”!

當我使用 python、mysql、sequel pro 應用程序在 Mac OS X Mountain Lion 中為 PyCharm 設置 Django 開發環境時,我得到與該線程所有者相同的錯誤。 但是,我對在 Mac OS Mountain Lion x86_x64(MySql 和 Python 也應該是相同的架構)下運行 python-mysqldb 並且已經嘗試過像 pip 等所有東西的人的回答。為了解決這個問題,請執行以下步驟:

  1. 這里下載 MySql for Python
  2. 解壓下載的文件。 在終端窗口中執行以下操作:tar xvfz downloade.tar。
  3. cd /to 解壓目錄
  4. 運行 sudo python setup.py install
  5. 如果你得到這樣的錯誤:“環境錯誤:/usr/local/bin/mysql_config not found”然后嘗試添加如下路徑:“export PATH=$PATH:/usr/local/mysql/bin”。 但是 id 對我沒有幫助,我找到了另一個解決方案。 在命令執行結束時,錯誤輸出如下所示:

    文件“/path_to_file/MySQL-python-1.2.4b4/setup_posix.py”,第 25 行,在 mysql_config 中引發 EnvironmentError("%s not found" % (mysql_config.path,))

  6. 使用 vim 打開 setup_posix.py 並轉到第 25 行(在您的情況下,除非版本相同,否則它可以不同)。

  7. 編輯后第 25 行應如下所示,除非您的 mysql 具有如下所示的符號鏈接“/usr/local/mysql/bin/”:

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  8. 在此之后,我遇到了另一個錯誤,如下所示:

    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) :未加載庫:libmysqlclient.18.dylib 引用自:/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so 原因:找不到圖像

  9. 最后我在控制台中做了以下操作:

    須藤ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

目前一切正常。 所以我希望它對使用Mac的人有所幫助。 :)

您缺少 python mysqldb庫。 使用此命令(適用於 Debian/Ubuntu)來安裝它: sudo apt-get install python-mysqldb

這是因為它沒有找到 sql 連接器。 嘗試:

pip install mysqlclient

我在這種環境下解決了這個問題:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

如果您使用'ENGINE': 'mysql.connector.django' ,安裝驅動程序執行:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

請注意, $ pip install mysql-python對我不起作用。

請注意,如果您使用'ENGINE': 'django.db.backends.mysql' ,您應該安裝驅動程序執行:
$ pip install mysqlclient

最后執行:
$ python manage.py migrate

如果沒問題,python 會創建所有這些表 id 數據庫:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

從這里下載並安裝用於 Windows 環境的 Mysql-python。 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

對於 Ubuntu 16.04 和 18.04 或 python 3 版本

sudo apt-get install python3-mysqldb

如果您使用的是 pyhton 3.4 或更高版本。 你必須安裝

sudo apt-get install python3-dev libmysqlclient-dev 

在終端。 然后在您的虛擬環境或安裝 pip 的地方安裝pip install mysqlclient

在 Ubuntu 上,建議使用發行版存儲庫。

sudo apt-get install python-mysqldb

使用與 Will 相同的錯誤消息,我首先安裝 mysql 是有用的,因為在安裝過程中將添加丟失的文件。 所以之后

brew install mysql

pip install mysql-python

運行沒有錯誤。

這也發生在我身上,我相信這不僅是 Django 開發人員的常見錯誤,也是 Flask 的常見錯誤,所以我解決這個問題的方法是使用 brew。

  1. brew install mysql
  2. sudo pip install mysql-python

這樣,每一個問題都得到了解決,兩個框架都運行得非常好。

PS:對於那些使用 macports 的人(比如我自己),這可能是一個問題,因為 brew 在不同的級別工作,我的建議是使用 brew 而不是 macports

我希望我能有所幫助。

嘗試:

pip install mysqlclient

我建議在虛擬環境中使用它。

我遇到了同樣的問題。以下解決了我的問題

在你的 shell 中運行pip install pymysql

然后,編輯項目原始目錄中的 init.py 文件(與 settings.py 相同),然后

添加:

導入pymysql

pymysql.install_as_MySQLdb()

這應該可以解決問題。

我認為是版本錯誤。

嘗試按以下順序安裝:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

我被困在這個很長一段時間然后我意識到出了什么問題 django 檢查 mysqlclient 如果它沒有在 django 之前安裝它會拋出這個錯誤所以簡單的解決方案是

pip uninstall django
pip install mysqlclient
pip install django

只是為了添加其他答案,如果您使用的是 Django,建議您在安裝 Django 之前安裝 mysql-python。

我在這上面浪費了很多時間。 事實證明,Python 3 不支持默認數據庫庫。 您必須使用不同的.

如果錯誤看起來像這樣

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

然后嘗試:

pip install python-mysqldb

面臨類似的問題。 我嘗試使用 pip 安裝mysql-python ,但由於 gcc 依賴錯誤而失敗。

對我有用的解決方案

conda install mysql-python

請注意,我已經安裝了 anaconda,它沒有 gcc 依賴項。

來源

安裝(如果沒有找到):

pip install mysql.connector

設置:

'default': {
    'ENGINE': 'mysql.connector.django',
    'NAME': '...',
    'HOST': '...',
    'PORT': '3306',
    'USER': '...',
    'PASSWORD': '...',
}

當我想使用 MySQL 作為默認數據庫時,我遇到了類似的錯誤。
這些錯誤可能是由於尚未安裝mysqlclient造成的。
這可以從命令行使用安裝;
pip install mysqlclient (適用於最新版本的python)
pip install mysql-python (對於舊版本的python)
就我而言,在滿足此要求后,我仍然遇到相同的錯誤,並已解決如下; 在您的django 項目目錄中選擇 venv 目錄並在這些目錄下,
選擇pyvenv.cfg文件,然后在詢問您是否要編輯此文件的對話框中單擊允許。 在這個文件中,
include-system-site-packages設置為false 所以把這行代碼像這樣改成真;

include-system-site-packages = true

現在一切正常

試試這個,只需使用 pip:在 Windows 上,推薦的命令是:

python -m pip install mysqlclient

我曾嘗試在這個問題中運行不同的命令。 但是,它們在 MXLinux 中都不適合我。 這是一個基於 Debian 11 的發行版(截至撰寫本文時)。 所以,這個答案也應該適用於 Debian。

sudo apt-get install python3-dev default-libmysqlclient-dev

然后在你的python環境中安裝mysql

pip install mysqlclient

我已經針對 Python==3.8.13 進行了測試。 AFAIK,這也適用於 Pyenv、Conda、Pipenv、Poetry 等。

注意:- 這可能適用於基於 Debian 的最新版本的發行版,如 LinuxMint、KDE Neon、Zorin OS、Kubuntu、elementary OS、Pop、_OS、Linux Lite、Linuxfx。 等等。

嘗試這個

apt-get install libmysqlclient-dev

並再次嘗試安裝 mysqlclient:

pip install mysqlclient

我在嘗試連接到mysql數據庫時遇到的問題。 我還提供了我已使用的數據庫設置。

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

數據庫設置::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

非常感謝您的幫助 !!

或許你可以試試下面的操作方式:
sudo python manage.py runserver 0.0.0.0:8000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM