Python跨目录导入报错:Django中views.py无法导入test.py的Main类
解决Django中导入外部模块的ModuleNotFoundError问题
看起来你遇到的核心问题是Python模块查找路径的差异——PyCharm自动帮你配置了路径,但命令行和Django服务器环境没跟上。下面给你几个不用硬编码路径的解决方案,按推荐程度排序:
1. 把dirCode转为可安装的本地包(最推荐)
这是最规范的做法,不仅能解决Django的问题,其他需要用到这个模块的脚本也能直接导入。步骤很简单:
- 在
src\dirCode目录下创建一个pyproject.toml文件,内容如下:[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "dircode" version = "0.1.0" packages = ["dirCode", "dirCode.dirSubCode"] - 打开Anaconda Prompt,切换到
src目录,执行:
这个命令会把dirCode作为“可编辑”的本地包安装到你的环境里,之后不管是Django还是命令行,都能直接用pip install -e .from dirCode.dirSubCode.test import Main导入,完全不用管路径问题。
2. 在Django全局配置中添加路径
如果不想搞包管理,也可以在Django的settings.py里统一配置路径,让所有应用都能识别到src下的模块:
import os import sys # 获取src目录的绝对路径(假设settings.py在src\Django\DjangoApp下) SRC_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 确保src目录在Python路径中 if SRC_ROOT not in sys.path: sys.path.append(SRC_ROOT)
这样Django启动时就会自动把src加入路径,你的导入语句就能正常工作了。这个方法只针对Django环境,但足够解决你当前的问题。
3. 设置PYTHONPATH环境变量(快速临时方案)
如果只是想快速测试,可以在Anaconda Prompt里临时设置PYTHONPATH:
# 替换成你实际的src路径 set PYTHONPATH=C:\your\full\path\to\src
然后再启动Django服务器:
python manage.py runserver
如果想永久生效,可以在Windows的「系统属性-环境变量」里添加一个名为PYTHONPATH的系统变量,值设为src的绝对路径。
为什么PyCharm能运行?
PyCharm默认会把你的项目根目录(这里就是src)标记为Sources Root,它会自动把这个目录加入Python的模块查找路径,所以导入没问题。但命令行和Django服务器不会自动做这个操作,所以需要手动配置。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

