質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

8294閲覧

[Django] ModuleNotFoundError: No module named 'MySQLdb'

pigton

総合スコア47

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/02 03:22

編集2018/10/02 03:22

前提・実現したいこと

Python: 3.6.6
Django: 2.1
MySQL: 5.7

Dockerに接続しようとした際、
ModuleNotFoundError: No module named 'MySQLdb' というエラーが発生しました。

mysqlclientはインストール済みです。

調べても、Python3以降なら「MySQLdb」は使えないので他のドライバー(例:mysqlclient)をインストールしてね
というような情報しか出てこず、お手上げです。

解決法のご教示よろしくお願い致します。

発生している問題・エラーメッセージ

root@635a7798577c:~/mysite2/mysite2# python3 manage.py runserver 0.0.0.0:8000 Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f629a2bb9d8> Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 15, in <module> import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run autoreload.raise_last_exception() File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception raise _exception[1] File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute autoreload.check_errors(django.setup)() File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 112, in populate app_config.import_models() File "/usr/local/lib/python3.6/site-packages/django/apps/config.py", line 198, in import_models self.models_module = import_module(models_module_name) File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 678, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/root/mysite2/mysite2/shop/models.py", line 26, in <module> class Book(models.Model): File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 139, in __new__ new_class.add_to_class(obj_name, obj) File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 304, in add_to_class value.contribute_to_class(cls, name) File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/related.py", line 1583, in contribute_to_class self.remote_field.through = create_many_to_many_intermediary_model(self, cls) File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/related.py", line 1046, in create_many_to_many_intermediary_model 'db_table': field._get_m2m_db_table(klass._meta), File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/related.py", line 1504, in _get_m2m_db_table return utils.truncate_name(m2m_table_name, connection.ops.max_name_length()) File "/usr/local/lib/python3.6/site-packages/django/db/__init__.py", line 33, in __getattr__ return getattr(connections[DEFAULT_DB_ALIAS], item) File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 202, in __getitem__ backend = load_backend(db['ENGINE']) File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 110, in load_backend return import_module('%s.base' % backend_name) File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 678, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 20, in <module> ) from err django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?

試したこと①

mysqlclient はインストール済みなので、

~/PycharmProjects/mysite2/mysite2$ pip install mysqlclient Requirement already satisfied: mysqlclient in /home/ユーザ名/testdir/lib/python3.6/site-packages (1.3.13)

となります。

試したこと②

ターミナルからデータベースのデータを取得することができるので、settings.py の問題ではなさそうです。

>>> Book.objects.get(id=3) <Book: Java ベーシック講座テキスト>

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

$ pip install mysqlclient mysqlclient in /home/ユーザ名/testdir/lib/python3.6/site-packages

なのに

File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 15, in <module> import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb'

違う場所にインストールされているdjangoからエラーが湧き上がってくることに疑問を抱いてください。

python3.6の環境が少なくとも2つ独立して存在しているのだと思いますが?

どんな環境構築にしているのかはわかりませんが、自分で立てた環境の扱い方を把握してないのなら「何をインストールすれば」以前の問題です。

ちなみにインストールするもの自体はmysqlclientで良いはずです。

投稿2018/10/02 11:46

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pigton

2018/10/03 06:06 編集

回答ありがとうございました。 確かに、Pythonが2つ入っていて、一方のPython3はdockerを起動していて、もう一方のPython3でパッケージをpipインストールしていました。 大変助かりました。ありがとうございます。
guest

0

PythonでMySQLを操作する方法:MySQLdb

MySQLを操作するためのライブラリはインストールしてありますか?
あるあるなのが、Pythonが複数はいってて、別の片方にライブラリが入ってた、ってのがありますが

投稿2018/10/02 03:28

編集2018/10/02 03:30
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pigton

2018/10/02 03:38

回答ありがとうございます! MySQL を操作するためのライブラリとは、libmysqlclient で問題ないでしょうか? でしたら、既にはいっております。 VirtualBox:~/PycharmProjects/mysite2/mysite2$ sudo apt-get install libmysqlclient-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 libmysqlclient-dev はすでに最新バージョン (5.7.23-0ubuntu0.18.04.1) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 8 個。
y_waiwai

2018/10/02 03:43

いや、pythonのライブラリです リンク先には > $ pip install MySQL-Python という操作が記述されてます
pigton

2018/10/02 05:02

回答ありがとうございます。 よく調べてみると、mysqlclientはデータベースの接続を担うものであって、操作はしないんですね。 pip install MySQL-PythonでModuleNotFoundError: No module named 'ConfigParser'がでましたので、 こちらを解決してインストールできればなんとかなりそうです。 ありがとうございました。
pigton

2018/10/02 05:36

何度もすいません。 MySQL-Python の代わりをPython3で担うのが mysqlclient なようで、 やはりmysqlclient でMySQLを操作できそうなのですが・・・。 何をインストールしたらよいのか、今一度ご教示頂けたら幸いでございます。 よろしくお願い致します。
y_waiwai

2018/10/02 09:00

「python インポートエラー」でぐぐってみてください ライブラリが入ってるはずだけど読み込めない場合の対処がでてきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問