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

Python包导入报错(ModuleNotFoundError):如何修正模块查找路径?

解决Python模块导入的ModuleNotFoundError问题

嘿,我之前也踩过一模一样的坑!这种模块路径的问题确实挺磨人的,给你几个实用的解决办法:

方法1:手动添加模块路径到sys.path

既然Python解释器找不到Phone目录下的Pots模块,我们可以直接把Phone目录的绝对路径添加到Python的搜索路径里。在main.py的最开头加上这段代码:

import sys
import os

# 获取Phone目录的绝对路径,这里假设Phone和main.py在同一父目录下
phone_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'Phone'))
sys.path.append(phone_dir)

# 现在就能正常导入Pots模块了
import Pots

这样Python就会把Phone目录纳入模块搜索范围,自然就能找到Pots了。

方法2:把父目录转为包,使用相对导入

如果你的项目是一个完整的包结构,可以给父目录也添加一个__init__.py(空文件就行),然后在main.py里用相对导入:

# 从当前包的Phone子包导入Pots
from .Phone import Pots

不过要注意,这种方式下不能直接双击运行main.py,得在父目录的上一级终端里用模块方式运行:

python -m parent_package.main

这里的parent_package是你父目录的名字,替换成实际名称就行。

方法3:设置PYTHONPATH环境变量

如果不想改代码,可以通过环境变量告诉Python去哪里找你的模块。

Linux/macOS终端:

# 替换成你实际的Phone目录路径
export PYTHONPATH="/full/path/to/your/Phone:$PYTHONPATH"
# 然后运行main.py
python main.py

Windows命令提示符:

# 替换成你实际的Phone目录路径
set PYTHONPATH=C:\full\path\to\your\Phone;%PYTHONPATH%
# 然后运行main.py
python main.py

这个方法的好处是不用修改代码,适合频繁使用这个模块的场景。

额外提醒:

  • 确保你的模块文件名不要和Python标准库的模块重名,比如别把文件命名为os.py或sys.py,不然会触发导入冲突。
  • Phone目录里的__init__.py可以是空文件,但必须存在,这样Python才会把这个目录识别为可导入的包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:00