如何解决Django启动时的ModuleNotFoundError:找不到scraper_app模块
解决Django启动时的ModuleNotFoundError: No module named 'scraper_app'问题
你的核心问题在于模块路径配置不匹配:
从你给出的文件结构来看,scraper_app是放在项目根目录下的djangoProject子文件夹里(和settings.py同级),而你在INSTALLED_APPS里直接写了'scraper_app',Python的模块搜索路径默认从manage.py所在的根目录开始,自然找不到嵌套在djangoProject里的scraper_app。
给你两种可行的解决办法:
方法一:修改INSTALLED_APPS配置
把INSTALLED_APPS里的'scraper_app'改成完整的模块路径:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 修改这里的路径 'djangoProject.scraper_app', ]
同时确认scraper_app文件夹里的apps.py内容正确,name字段保持为'scraper_app'即可:
from django.apps import AppConfig class ScraperAppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'scraper_app'
方法二:调整文件结构(更符合Django常规项目结构)
把scraper_app文件夹从djangoProject子目录里移出来,放到manage.py所在的根目录下,让它和djangoProject文件夹平级,这样你的INSTALLED_APPS配置不需要修改,就能正常识别到scraper_app模块。
调整后的文件结构应该是:
djangoProject [**scraper**] ├── djangoProject │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── scraper_app # 移到根目录 ├── manage.py ├── templates │ ├── results.html │ └── search.html └── venv ├── bin ├── lib └── pyvenv.cfg
验证方法
在manage.py所在的根目录打开终端,激活虚拟环境后,运行以下命令验证模块是否能被正常导入:
- 如果用方法一:
python -c "import djangoProject.scraper_app" - 如果用方法二:
python -c "import scraper_app"
如果命令没有报错,说明模块路径已经正确配置,此时再启动开发服务器python manage.py runserver应该就能正常运行了。
内容的提问来源于stack exchange,提问作者Chanak Gautam
相关产品推荐
相关产品推荐

