VSCode中Python导入报错(PyCharm正常):模块未找到与相对导入问题
VSCode中Python模块导入报错解决
文件结构
assignment | |__ qn1 | |__ qn1.py | |__ qn2 |__ qn2.py
代码内容
qn1/qn1.py
class A: def __init__(self): pass def method(self): pass
qn2/qn2.py
from qn1.qn1 import A
问题现象
- 代码在PyCharm中正常运行,但VSCode执行时抛出:
ModuleNotFoundError: No module named 'qn1' - 尝试相对导入语句:
触发报错:from ..qn1.qn1 import A from ..qn1 import qn1; qn1.AImportError: attempted relative import with no known parent package - 已在qn1目录添加
__init__.py文件,问题未解决
可行解决方案
方案1:手动添加父目录到Python路径
在qn2.py开头加入以下代码,将assignment目录加入Python的模块搜索路径:
import sys from pathlib import Path # 获取当前文件的父目录的父目录(即assignment目录) sys.path.append(str(Path(__file__).parent.parent)) from qn1.qn1 import A
方案2:配置VSCode运行环境
- 打开VSCode的
.vscode/launch.json文件(若不存在则手动创建) - 修改或添加运行配置,指定工作目录为assignment:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "cwd": "${workspaceFolder}/assignment", "console": "integratedTerminal" } ] }
之后直接运行qn2.py即可。
方案3:用模块方式运行
打开VSCode终端,切换到assignment目录,执行以下命令运行qn2.py:
python -m qn2.qn2
此方式会将assignment视为包根目录,支持相对导入(此时qn2.py中用from ..qn1.qn1 import A也可正常工作)
内容的提问来源于stack exchange,提问作者jspoh
相关产品推荐
相关产品推荐

