You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

直接执行Python脚本时出现ModuleNotFoundError: No module named 'pars'

问题:Django独立脚本运行时出现ModuleNotFoundError: No module named 'pars'

场景背景

已在Django项目的settings.py的INSTALLED_APPS中添加自定义应用'pars',项目目录结构如下:

secenumproject/ 
    settings.py
    # 其他项目文件
    secenumproject/pars
        models.py
        parse.py
        # 其他应用文件

运行包含Django独立执行配置的Python脚本时,触发如下错误:

ModuleNotFoundError: No module named 'pars'

脚本代码如下:

# below 5 lines to run scripts 'standalone' in django
import django
from django.conf import settings
from pars import pars_defaults
settings.configure(default_settings=pars_defaults, DEBUG=True)
django.setup()
from pars.models import tb1, tb2

technologytitle=soup.find("h1").text

try:
    technology=CMS(nm=technologytitle)
    technology.save()
    print("saved techology: {}".format(technologytitle))
except IntegrityError as e:
     print("Integrity error occurring with saving: {} {}".format(technologytitle, e))

解决方法

1. 手动添加项目根目录到Python路径

pars模块位于内层secenumproject/目录下,直接运行脚本时Python解释器无法自动识别该路径,需在脚本开头添加路径配置:

import sys
import os

# 获取外层secenumproject/的绝对路径
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 将项目根目录加入Python路径
sys.path.append(PROJECT_ROOT)

2. 改用项目原生settings配置

既然已在项目settings.py中注册了pars应用,直接复用项目配置更可靠,避免自定义配置遗漏路径相关逻辑。修改脚本开头的Django初始化代码:

import django
import os
import sys

# 添加项目根目录到Python路径
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(PROJECT_ROOT)

# 指定Django使用项目的settings模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'secenumproject.settings')
django.setup()

# 后续正常导入模型
from pars.models import tb1, tb2

3. 确保脚本运行位置正确

必须在外层secenumproject/目录下执行脚本,避免相对路径错误。例如脚本放在外层目录时,运行命令:

python parse.py

若脚本在其他位置,使用绝对路径执行:

python /完整路径/secenumproject/parse.py

内容的提问来源于stack exchange,提问作者Jshee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:45:33