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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

15559閲覧

【Django】migrateでModuleNotFoundErrorが発生する

kinaly

総合スコア11

Django

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

Python 3.x

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

0グッド

0クリップ

投稿2018/08/16 02:14

編集2018/08/16 03:00

前提・実現したいこと

Djangoで自作したモデルを使用したいです。

setting.pyのINSTALLED_APPに自作アプリ「trackdict」を追記したところ、manage.pyのmigrate実行時にModuleNotFoundErrorが発生するようになってしまい、困っています。

エラーメッセージを見るに、INSTALLED_APPで指定したアプリにdjangoというサフィックスが入ってしまっているように見えます。

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

(env1) C:\Users\Gonbei\Documents\GitHub\myproject>python manage.py migrate Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "C:\Users\Gonbei\Documents\python\env1\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line utility.execute() File "C:\Users\Gonbei\Documents\python\env1\lib\site-packages\django\core\management\__init__.py", line 357, in execute django.setup() File "C:\Users\Gonbei\Documents\python\env1\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:\Users\Gonbei\Documents\python\env1\lib\site-packages\django\apps\registry.py", line 89, in populate app_config = AppConfig.create(entry) File "C:\Users\Gonbei\Documents\python\env1\lib\site-packages\django\apps\config.py", line 116, in create mod = import_module(mod_path) File "C:\Users\Gonbei\Documents\python\env1\lib\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 941, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked ModuleNotFoundError: No module named 'trackdictdjango' (env1) C:\Users\Gonbei\Documents\GitHub\myproject>

該当のソースコード

フォルダ構成

C:\Users\Gonbei\Documents\GitHub\myproject │ db.sqlite3 │ manage.py │ ├─.idea │ myproject.iml │ misc.xml │ modules.xml │ workspace.xml │ ├─myproject │ │ settings.py │ │ urls.py │ │ wsgi.py │ │ __init__.py │ │ │ └─__pycache__ │ settings.cpython-36.pyc │ urls.cpython-36.pyc │ wsgi.cpython-36.pyc │ __init__.cpython-36.pyc │ └─trackdict │ admin.py │ apps.py │ models.py │ tests.py │ views.py │ __init__.py │ ├─migrations │ __init__.py │ └─__pycache__ apps.cpython-36.pyc __init__.cpython-36.pyc

myproject\settings.py

python

1# 途中省略 2 3# Application definition 4INSTALLED_APPS = [ 5 'trackdict' 6 'django.contrib.admin', 7 'django.contrib.auth', 8 'django.contrib.contenttypes', 9 'django.contrib.sessions', 10 'django.contrib.messages', 11 'django.contrib.staticfiles', 12] 13 14# 後略

trackdict\models.py

python

1from django.db import models 2 3Class Music(): 4 name = models.CharField(max_length=100) 5 is_active = models.BooleanField(default=True) 6 7 def __str__(self): 8 return self.name

試したこと

  • pipのアップデート
  • Djangoのアップデート
  • startappでappを別名新規作成し、同様のことを試した
  • INSTALLED_APPS内の指定で「trackdict」とあるところを以下の表記で試す

--「myproject.trackdict」
--「trackdict.app.TrackdictConfig」
--「myproject.trackdict.app.TrackdictConfig」

  • python manage.py makemigrationsを実行 → migrate実行時と同じエラーが発生し異常終了

補足情報(FW/ツールのバージョンなど)

  • 実行OS: Windows 10
  • Python: 3.6.5
  • Django: 2.1
  • 上記pythonとDjangoはVirtualenvでenv1という環境を作りそこにインストールしています。実行もenv1下で行っています。

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

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

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

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

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

pumper

2018/08/16 02:41

migrationsディレクトリに何もはいっていませんが,python manage.py makemigrationsコマンドは実行しましたか?
kinaly

2018/08/16 02:57

実行していませんでした。今実行してみたところ、migrate実行時と同じエラーが発生して異常終了しました。
guest

回答1

0

ベストアンサー

原因

カンマ忘れがあるのでそちらを追加しましょう。

python

1INSTALLED_APPS = [ 2 'trackdict'

python

1INSTALLED_APPS = [ 2 'trackdict', # here!

カンマ忘れがあるため、'trackdict'と次の行の'django.contrib.admin',が1つの文字列として評価され、結果的に妙なモジュール名として認識されています。

(補足)

この文字が連結されるのはPythonの正常な仕様で、文字列が続けて定義されていると、それらが1つの文字列と扱われます。

python

1# マーシャルブルースマザーズ3世 2name = 'マーシャル' 'ブルース' 'マザーズ3世' 3 4# ['マーシャルブルースマザーズ3世'] 5name_list = [ 6 'マーシャル' 7 'ブルース' 8 'マザーズ3世' 9]

今回であれば、INSTALLED_APPSの最初の要素が
'trackdictdjango.contrib.admin'となり、trackdictdjangoというモジュールが見つからないとエラーが出ました。

おまけ

INSTALLED_APPS内の指定で「trackdict」とあるところを以下の表記で試す
--「myproject.trackdict」
--「trackdict.app.TrackdictConfig」
--「myproject.trackdict.app.TrackdictConfig」

trackdict.apps.TrackdictConfig を試してみてください。appではなくapps、appsモジュールのことです。アプリケーション名.apps.アプルケーション名最初大文字Config が基本の形です。

投稿2018/08/16 09:09

編集2018/08/16 09:33
toritoritorina

総合スコア972

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

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

kinaly

2018/08/16 09:53

カンマ抜けを修正したところ、本事象が解決しました! カンマ抜け、気づいていなかったので非常に助かりました。pythonは連続した文字列はエラーにならず、結合されるのですね。 直接原因だけでなく補足やおまけまで丁寧につけていただき勉強になります。ありがとうございます!
hiroakies

2018/12/19 16:47

うおお!自分も同じところで悩んでいましたが、解決しました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問