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

Django项目调用外部本地包报错:No module named 'globals'

解决Django跨目录导入自定义包报错"No module named 'globals'"

先明确目录结构

假设你的项目结构大致如下:

api_yahoo_finance/
├── yahoo/
│   ├── api_yahoo/
│   │   ├── views.py  # 你当前编写代码的文件
│   │   └── __init__.py
│   ├── globals/  # 你要导入的自定义包
│   │   ├── __init__.py
│   │   └── 你的模块文件.py
│   └── __init__.py
├── manage.py
└── settings.py

如果globals和api_yahoo同属yahoo目录,问题大概率出在导入路径或Python的模块搜索范围上,试试下面几种解决方法:

方法1:使用相对导入

在views.py里直接通过相对路径导入目标包:

# views.py
from ...globals import 你需要导入的模块或类

这里的三个点...表示向上跳转两级目录,从api_yahoo目录回到yahoo目录,就能定位到globals包。

方法2:将项目根目录加入Python搜索路径

如果觉得相对导入不够直观,可手动把项目根目录添加到sys.path中,让Python能识别上层目录的包。在views.py开头添加以下代码:

# views.py
import sys
from django.conf import settings
sys.path.append(settings.BASE_DIR)

# 之后直接导入即可
from yahoo.globals import 你需要导入的模块或类

利用Django自带的BASE_DIR最稳妥,它默认指向api_yahoo_finance项目根目录。

方法3:检查__init__.py文件

确认globals目录下的__init__.py存在(空白文件即可),同时核对导入语句的拼写,避免因写错globals名称导致报错。

额外提醒

不要直接写from globals import ...,Python默认只会搜索当前脚本所在目录和sys.path中的路径,无法直接找到上级目录的包。如果globals包本身就在api_yahoo_finance根目录下,那直接from globals import ...即可,因为Django启动时会自动将项目根目录加入sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:05:16