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
相关产品推荐
相关产品推荐

