使用sys.path.append()报错ModuleNotFoundError: No module named Project如何解决
问题原因
- 你使用的
sys.path.append('../Project')是相对脚本运行时工作目录的路径,而非相对file1.py文件存储位置的路径。只有你在folder1目录下直接执行python file1.py时该路径才有效,只要切换执行目录就会指向错误位置,无法定位到Project目录。 - 即使路径正确,你的导入写法也有问题:将
Project目录加入sys.path后,Project本身就已经是模块搜索的根目录,不需要再在导入语句前加Project.前缀,否则相当于搜索Project/Project/folder2路径,必然找不到模块。
修复方案
通过file1.py的内置__file__属性动态拼接Project目录的绝对路径,无需写死各设备专属的固定路径,可跨设备正常运行。
Python 3.4+ 版本(推荐)
使用pathlib实现,代码更易读:
import sys from pathlib import Path # 取当前文件的父目录(folder1)的父目录,就是Project根目录的绝对路径 project_root = Path(__file__).parent.parent.resolve() sys.path.append(str(project_root)) # 直接导入即可 from folder2 import file2
低版本Python兼容写法
用os.path实现:
import sys import os project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root) from folder2 import file2
内容的提问来源于stack exchange,提问作者chadlei
相关产品推荐
相关产品推荐

