Django项目中Webscrape脚本导入projects模块报错求助
Django爬虫脚本导入ORM模型报错:
ModuleNotFoundError: No module named 'projects' 问题详情
开发Django应用时,计划通过网页爬取数据插入Django ORM,但在Scripts/Webscrape.py中导入projects/models.py里的Weather类时触发上述错误,已尝试更新sys.path但无效。
项目结构
app ├── projects │ ├── __init__.py │ ├── models.py │ ├── tests.py │ ├── views.py │ ├── urls.py │ └── admin.py └── Scripts ├── Webscrape.py └── __init__.py
相关代码
Webscrape.py
from projects.models import Weather
projects/models.py
from django.db import models class Weather(models.Model): Date = models.DateField(blank=False, default='1900-01-01',) Temperature = models.CharField(max_length=15)
INSTALLED_APPS配置
INSTALLED_APPS = [ 'pages.apps.PagesConfig', 'projects.apps.ProjectsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'huey.contrib.djhuey', 'Scripts', ]
解决步骤
1. 初始化Django环境
直接运行脚本无法加载Django的配置环境,必须在脚本开头添加初始化代码:
import os import django # 替换成你的项目settings模块路径,比如app是根目录下的主项目文件夹 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') django.setup() # 初始化后再导入模型 from projects.models import Weather
2. 修正Python路径
如果仍报错,确保项目根目录(包含app的文件夹)在Python搜索路径中,在Django初始化代码前添加:
import sys from pathlib import Path # 获取项目根目录:从Webscrape.py往上两级就是app目录,再往上就是项目根目录 PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent sys.path.append(str(PROJECT_ROOT))
3. 正确运行脚本
从项目根目录执行脚本,避免路径混乱:
cd /path/to/your/project-folder python app/Scripts/Webscrape.py
或者用模块方式运行:
python -m app.Scripts.Webscrape
4. 验证APP注册
你的INSTALLED_APPS里已经正确注册了projects,这部分无需修改。
内容的提问来源于stack exchange,提问作者Stephen H
相关产品推荐
相关产品推荐

