Django项目外导入本地自定义包报错:No module named 'manage_db'
解决Django导入项目外本地包的"No module named 'manage_db'"错误
核心原因
Python的模块搜索路径(sys.path)未包含manage_db所在的目录,导致无法识别这个本地自定义包。
解决方案
方案1:手动添加包目录到Python路径(快速生效)
在Django项目的settings.py中加入以下代码,将manage_db所在的父目录纳入Python的搜索路径:
import sys import os # 假设目录结构为:[父目录]/manage_db/ 和 [父目录]/api-yahoo-finance/ # 获取api-yahoo-finance的父目录(即manage_db所在的上级目录) parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(parent_dir)
添加完成后,直接在api-yahoo-finance/yahoo/api_yahoo/views.py中使用from manage_db.exc_get_symbol import get_symbol即可正常导入。
注意:如果你的实际目录结构和示例不同,需要调整
os.path.dirname的调用次数,确保最终获取的路径是manage_db所在的目录。
方案2:将本地包设为可编辑安装(长期复用推荐)
如果manage_db需要在多个项目中复用,可将其配置为可编辑安装的包:
- 在
manage_db目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages setup( name="manage_db", version="0.1", packages=find_packages(), )
- 打开终端进入
manage_db目录,执行命令:
pip install -e .
安装完成后,Python会全局识别manage_db包,无需修改sys.path,直接在Django中导入即可。
必要前提
确保manage_db目录下存在__init__.py文件(空文件即可),否则Python不会将其识别为合法的Python包。
内容的提问来源于stack exchange,提问作者Django
相关产品推荐
相关产品推荐

