前提・実現したいこと
django初心者です。
djangoをデバッグしようとするとImportErrorが発生し、
manage.pyから先へ進めない現象に悩まされています。
環境としては、WSL(Ubuntu)上にvenvでpython仮想環境を作成し、
その中でDjangoを実行している状態です。
発生している問題・エラーメッセージ
launch.jsonを実行し、manage.pyをrunserverすることはできたのですが、
下記のエラーが出てしまいます。
Djangoのモジュールが正しくインポートされていないとのことです。
エラーメッセージ (venv) nobishiro@DESKTOP-E3BHFC4:~/makeAppProject/TaskManager/TaskManager$ cd /home/nobishiro/makeAppProject/TaskManager/TaskManager ; env /usr/bin/python3 /home/nobishiro/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/launcher 63086 -- /home/nobishiro/makeAppProject/TaskManager/TaskManager/manage.py runserver Traceback (most recent call last): File "/home/nobishiro/makeAppProject/TaskManager/TaskManager/manage.py", line 10, in main from django.core.management import execute_from_command_line ModuleNotFoundError: No module named 'django' The above exception was the direct cause of the following e![イメージ説明](d2f1b59b964ce6c083ae627aae1f49f2.png)on: Traceback (most recent call last): File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/usr/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/nobishiro/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module> cli.main() File "/home/nobishiro/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 430, in main run() File "/home/nobishiro/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 267, in run_file runpy.run_path(options.target, run_name=compat.force_str("__main__")) File "/usr/lib/python3.6/runpy.py", line 263, in run_path pkg_name=pkg_name, script_name=fname) File "/usr/lib/python3.6/runpy.py", line 96, in _run_module_code mod_name, mod_spec, pkg_name, script_name) File "/usr/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/nobishiro/makeAppProject/TaskManager/TaskManager/manage.py", line 21, in <module> main() File "/home/nobishiro/makeAppProject/TaskManager/TaskManager/manage.py", line 16, in main ) from exc ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
該当のソースコード
launch.json
json
1{ 2 "configurations": [ 3 { 4 "name": "Python: Django", 5 "type": "python", 6 "request": "launch", 7 "program": "${workspaceFolder}/manage.py", 8 "pythonPath": "/usr/bin/python3", 9 "args": [ 10 "runserver" 11 ], 12 "django": true 13 } 14 ] 15}
manage.py
python
1#!/usr/bin/env python 2"""Django's command-line utility for administrative tasks.""" 3import os 4import sys 5 6 7def main(): 8 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TaskManager.settings') 9 try: 10 from django.core.management import execute_from_command_line 11 except ImportError as exc: 12 raise ImportError( 13 "Couldn't import Django. Are you sure it's installed and " 14 "available on your PYTHONPATH environment variable? Did you " 15 "forget to activate a virtual environment?" 16 ) from exc 17 execute_from_command_line(sys.argv) 18 19 20if __name__ == '__main__': 21 main() 22
settings.json
json
1{ 2 "editor.suggestSelection": "first", 3 "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue", 4 "editor.formatOnPaste": true, 5 "editor.formatOnSave": true, 6 "editor.formatOnType": true, 7 "python.defaultInterpreterPath": "/usr/bin/python3", 8 "python.venvpath": "/usr/bin/python3" 9} 10
原因ではないかと思っていること
・デバッグ実行時のpython実行環境の設定がないのではないか。
先日、python仮想環境を有効(source venv環境/bin/activate)にせず、「python3 manage.py runserver」を行った時にもImportErrorが起き、manage.pyの16行目でエラーが発生していました。
そのことから、デバッグ実行時にpython仮想環境の有効化が必要なのではないかと思いました。
試してみたこと
①launch.jsonにpythonpathを追加
②settings.jsonにpython.venvpathの設定を追加
しかし、ImportErrorは直りませんでした。
伺いたいこと
伺いたいことは2点あります。
①「デバッグ実行時にpython実行環境の設定がないからImportErrorが発生している」という考えはあっているか。もし合っているなら、どのファイルに、どのように記述すればよいか
③もし合っていなければ、他にどのような原因があるのか
ご存じの方がいらっしゃるなら、ぜひご教示いただきたいです。
以上、よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。