Python3自定义模块导入报错:ModuleNotFoundError问题求助
解决模块导入报错的几种方法
方法1:使用相对导入
在data/datadownload.py里改成相对导入写法:
from ..models.restaurant import Restaurant
注意:这种方式要求以包的形式运行项目,不能直接双击运行datadownload.py,需从项目根目录执行命令:
python -m data.datadownload
方法2:手动添加项目根目录到Python路径
在datadownload.py最顶部添加以下代码,强制让Python识别项目根目录:
import sys import os # 获取项目根目录的绝对路径并加入搜索路径 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 之后即可正常导入 from models.restaurant import Restaurant
方法3:设置PYTHONPATH环境变量
打开终端进入项目根目录,执行对应系统的命令:
Windows(PowerShell)
$env:PYTHONPATH = "$(Get-Location);$env:PYTHONPATH"
Mac/Linux(bash)
export PYTHONPATH=$(pwd):$PYTHONPATH
设置完成后再运行脚本,Python就能自动识别根目录下的models模块。
额外注意事项
- 确保
models和data文件夹内都存在空的__init__.py文件,这样Python才会将它们识别为可导入的包。 - 不要给脚本文件起与模块名重复的名字(比如
models.py),避免命名冲突。
内容的提问来源于stack exchange,提问作者Saff.gh
相关产品推荐
相关产品推荐

