Windows下VSCode中Python父项目子项目出现ModuleNotFoundError如何解决?
Python模块导入问题解决方案
编辑:更简洁的解决方案
无需为代码创建单独工作区(除非你确实需要,这种情况可参考下方指南),也不用在parent根目录下放置.vscode文件夹,从左侧“运行和调试”菜单打开工作区启动配置,修改为如下内容:
{ "folders": [ { "path": "%path to parent%/parent" } ], "settings": {}, "launch": { "version": "0.2.0", "configurations": [ { "name": "Launch Python parent", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}\\extensions\\mycode", // <-- 重要 "env": {"PYTHONPATH": "${workspaceFolder}; ${workspaceFolder}\\extensions\\mycode; ${env:PYTHONPATH}"} // <-- 重要 } ] } }
虽然简化程度有限,但无需修改父项目或设置多个工作区。
问题背景
我正在为一个父项目开发子扩展,目录结构如下:
parent/ extensions/ mycode/ myutils/ IMyModule.py MyModule.py myscripts/ myscript.py utils/ __init__.py modules.py scripts/ script.py
myscript.py中的导入语句:
# myscript.py from utils.modules import Module from myutils.mymodule import MyModule
MyModule.py中的导入语句:
# MyModule.py from IMyModule import IMyModule
(这是我第一次尝试OOP编程)
运行时出现ModuleNotFoundError: No module named 'myutils'错误。
方法一
添加
__init__.py文件:在myutils文件夹及所有嵌套子文件夹中添加__init__.py,示例内容如下:# myutils/__init__.py from .IMyModule import * from .MyModule import *在VSCode中将
parent文件夹添加为工作区,然后在mycode/目录下创建.vscode/launch.json,配置内容如下:{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileWorkspaceFolder}", "env": {"PYTHONPATH": "${workspaceFolder:parent}; ${workspaceFolder:mycode}; ${env:PYTHONPATH}"} } ] }其中
cwd配置确保父项目和子项目的工作目录正确,PYTHONPATH配置指定Python的包查找路径。
最终目录结构如下:
parent/ .vscode/ launch.json extensions/ mycode/ myutils/ __init__.py IMyModule.py MyModule.py myscripts/ myscript.py utils/ modules.py scripts/ script.py
完成配置后,myscript.py可正常导入模块,父项目代码也能正常运行。
欢迎提出更简单的解决方法建议。
内容的提问来源于stack exchange,提问作者DrifterOfTime
相关产品推荐
相关产品推荐

