Spyder中如何处理相对路径?解决from .tool import *导入报错问题
解决Spyder中相对导入引发的ImportError问题
方法1:修改Spyder运行配置,将文件作为模块执行
- 打开Spyder,点击顶部菜单栏的
Run->Configuration per file - 在弹出的配置窗口中,勾选
Run as a module选项 - 在
Module name输入框中填写文件对应的模块路径(比如文件pythonFile.py在mypackage目录下,就填mypackage.pythonFile) - 保存配置后重新运行文件,相对导入即可正常工作
方法2:修改导入方式并添加路径到sys.path
- 在
pythonFile.py开头添加以下代码,将包的父目录加入Python搜索路径:
import sys from pathlib import Path # 获取当前文件所在目录的父目录(即包的上层目录) package_parent = str(Path(__file__).resolve().parent.parent) if package_parent not in sys.path: sys.path.append(package_parent)
- 将原来的相对导入
from .tool import *改为绝对导入,比如from mypackage.tool import *(mypackage是你的包名)
方法3:调整Spyder的工作目录
- 在Spyder界面右上角的工作目录选择框中,直接选择你的包所在的父目录
- 确认工作目录切换后,重新运行
pythonFile.py,此时Python能识别包结构,相对导入可正常生效
内容的提问来源于stack exchange,提问作者Tarek
相关产品推荐
相关产品推荐

