通过SSH克隆仓库后导入父目录本地模块出现ModuleNotFoundError如何解决
问题解决方案
你遇到的问题核心是sys.path.append("./")添加的是执行python命令时的终端工作目录,而非当前代码文件所在的父目录,具体排查和解决方法如下:
- 路径定位错误修复
不要用相对路径./来添加上级目录,改用当前脚本的绝对路径定位父目录:
import sys import os # 取当前脚本的绝对路径所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 取当前脚本目录的父目录 parent_dir = os.path.dirname(script_dir) sys.path.append(parent_dir) import testfile as test
- 检查模块结构合规性
- 确认
testfile.py确实存放在你要导入的父目录下,路径拼写、大小写完全匹配(Linux/Mac环境下路径大小写敏感,和Windows不同) - Python3.3以上版本虽然支持隐式命名空间包,但如果父目录需要作为包被识别,建议在目录下新增空的
__init__.py文件做兼容
- 确认
- 分支文件校验
你是在新建分支后操作的,确认当前分支下已经同步了testfile.py文件,且该文件没有被项目的.gitignore规则过滤 - 命名冲突排查
执行下方代码排查是否存在同名模块优先级冲突:
import sys # 打印所有导入路径,确认父目录在列表中且优先级高于其他可能存在同名模块的路径 print(sys.path) # 检查是否已经有同名模块被加载 print(sys.modules.get("testfile"))
内容的提问来源于stack exchange,提问作者terdev
相关产品推荐
相关产品推荐

