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

Django项目导入同目录sources.py模块出现ModuleNotFoundError

解决Django中ModuleNotFoundError: No module named 'sources'的问题

你遇到的问题核心是Python运行环境的模块搜索路径差异——直接运行views.py时和启动Django服务器时,Python查找模块的路径不一样,导致导入失败。下面给你一步步解决的方案:

问题原因

当你直接运行views.py时,Python会把当前文件所在的目录(也就是betrTV_app/)加入到模块搜索路径sys.path里,所以能直接找到同目录下的sources.py。但启动Django服务器时,Python的搜索路径是项目根目录(也就是betrTV/),这时候sources.py在betrTV_app/子目录下,直接import sources自然找不到。

解决方案

你需要用相对导入或者绝对导入来正确引用sources.py模块:

方法1:使用相对导入(推荐,更贴合app内的模块结构)

修改views.py里的导入语句为:

from .sources import video

这里的.代表当前模块所在的包(也就是betrTV_app),告诉Python从当前app目录下导入sources模块里的video函数。

方法2:使用绝对导入(基于项目结构的完整路径)

如果相对导入让你觉得困惑,也可以用绝对路径导入:

from betrTV_app.sources import video

因为你已经把betrTV_app加入到INSTALLED_APPS里,Django会自动把项目根目录加入到sys.path,所以直接用app名称加模块名就能找到。

额外检查点

  • 确保betrTV_app目录下有__init__.py文件(可以是空文件)——虽然Python 3.3+支持无__init__.py的命名空间包,但Django依然要求每个app目录有这个文件,才能被正确识别为Python包。
  • 避免使用import sources *或者import .sources这类错误语法:import .sources本身不符合Python相对导入的语法规范,必须用from .sources import ...的形式。

验证修改

修改完导入语句后,重启Django服务器,应该就能正常加载sources.py里的函数了,和你直接运行views.py时的效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:45:08