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

Django外部脚本执行django.setup()提示No module named 'api.apps'报错

问题原因

核心是Python模块搜索路径和Django配置的导入路径不匹配:

  • 你正常启动Django服务时,执行路径是Django项目根目录(包含manage.py和api文件夹的database目录),Python默认将当前路径加入搜索路径,因此INSTALLED_APPS中配置的api.apps.ApiConfig可以被正常识别。
  • 你运行外部脚本时,将Python路径设置为了更上层的根目录,Django加载配置时会从这个上层目录搜索api.apps模块,但api文件夹实际存放在下层的database子目录中,自然无法找到。
解决方案

推荐优先调整外部脚本的路径配置,无需修改原有Django项目代码,适配两种运行场景:
在外部脚本初始化Django配置前,手动将api文件夹所在的Django项目根目录(即包含manage.py的database目录)加入Python搜索路径,示例代码如下:

import os
import sys

# 此处替换为你实际的Django项目根目录(包含manage.py、api文件夹的database目录的绝对路径)
DJANGO_PROJECT_ROOT = "/path/to/your/proj/database"
sys.path.append(DJANGO_PROJECT_ROOT)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'database.settings')
import django
django.setup()

# 此时可以直接导入api下的模型,和项目内导入逻辑一致
from api.models import Example

注意:DJANGO_SETTINGS_MODULE的取值需要和你加入搜索路径的层级对应:

  • 若你将上层proj目录加入搜索路径,此处填database.database.settings
  • 若你将proj/database目录(包含manage.py的Django项目根目录)加入搜索路径,此处填database.settings

如果不想修改脚本路径配置,也可以修改database.settings.py中的INSTALLED_APPS配置,将api.apps.ApiConfig调整为带前缀的完整导入路径:

INSTALLED_APPS = [
    # 替换为对应路径
    'database.api.apps.ApiConfig',
    # 其余配置保持不变
    'django.contrib.admin',
    'django.contrib.auth',
    ...
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:06