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

Python ModuleNotFoundError:同目录模块导入失败的解决方案咨询

解决Python同目录模块导入报错的几种方法

问题背景

你的项目结构:

Project Folder
├── Main.py
└── modules
    └── PowerSupply
        ├── PowerSupply.py
        └── SerialPort.py

运行Main.py时,PowerSupply.py里用from SerialPort import SerialPort会报ModuleNotFoundError,改成绝对路径能运行但不够合理,下面是几种更优的解决方式:

方法1:相对导入

在PowerSupply.py里用相对导入语法,因为两个文件在同一目录,直接写:

from .SerialPort import SerialPort

这里的.表示当前模块所在的目录,Python会优先从同目录查找模块,这种方式更符合包内模块的引用逻辑,也不用写冗长的绝对路径。

方法2:规范包结构

在PowerSupply文件夹里添加一个空的__init__.py文件(Python 3.3+虽可不加,但加上更符合包的规范),之后在PowerSupply.py里可以用两种写法:

# 写法一
from . import SerialPort
# 写法二
from .SerialPort import SerialPort

这样Python会把PowerSupply识别为一个标准包,同目录下的模块就能正常互相引用。

方法3:临时调整模块搜索路径(不推荐)

如果只是临时应急,可以在PowerSupply.py开头添加代码,把当前文件所在目录加入Python的模块搜索路径:

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from SerialPort import SerialPort

但这种方式会污染全局模块搜索路径,容易引发命名冲突,非必要不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:11:00