Python模块在VS Code中导入出错

59

我正在尝试在Python中从上一级目录进行导入。

import sys

sys.path.append('..')
from cn_modules import exception

当我尝试运行构建任务时,从VSCode中获取了以下错误:

ImportError: No module named cn_modules

在终端(python)中没有任何错误,同样的代码可以正常工作。
当我尝试从VSCode Run Build task中运行它时,我面临着这个问题。
你知道出了什么问题吗?

我花了很多时间,但无法解决此问题,非常感谢您的帮助。


注意:使用VSCode进行调试时可以正常工作。下面是我的launch.json和tasks.json配置:

launch.json

 {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python Console App",
                "type": "python",
                "request": "launch",
                "stopOnEntry": true,
                "program": "${file}",
                "externalConsole": true,
                "debugOptions": [
                    "WaitOnAbnormalExit",
                    "WaitOnNormalExit"
                ],
                "env": {},
                "envFile": "${workspaceRoot}/.env",
                "console":"integratedTerminal",
                "pythonPath": "${config:python.pythonPath}"
            }
        ]
    }

任务清单.json

{
        "version": "0.1.0",
        "command": "/usr/bin/python",
        "isShellCommand": true,
        "args": ["${file}"],
        "showOutput": "always",
        "env": {},
        "envFile": "${workspaceRoot}/.env",
        "pythonPath": "${config:python.pythonPath}"
 }

2
“向上一级目录”...从哪里开始?您是否了解当前工作目录?如果您想从脚本所在的位置向上进入一个目录,那么您需要先找到脚本的路径。 - Aran-Fey
2
可能是如何在Python中正确确定当前脚本目录?的重复问题。 - Aran-Fey
3
在Python中,我没有任何问题运行代码,它能正常工作。但是,当我尝试从VSCode的生成任务中运行相同的代码时,我遇到了问题。 - Chandan Nayak
构建任务在哪里设置CWD(当前工作目录)? - ifconfig
1
这是VSCode已知的问题,设置'cwd'和类似的功能不起作用。 - gented
显示剩余5条评论
11个回答

1

由于这是一个VScode问题,我可以补充一下我的答案。

我们在backends文件夹中运行许多Python Django后端,如下所示:

+projectBackends
    -oneService
    -twoService
    -threeService

在我的VScode项目文件夹中,我只需打开projectBackends文件夹,这样就可以一次性获得其中所有服务。看起来很清晰简单。 但是,所有的代码检查都是从projectBackends根文件夹进行的,而不是从每个服务的根文件夹进行的:
from oneService.module1 import view

给出了导入错误,如果我把它放在HTML中,就会出现该错误。
from projectBackends.oneService.module1 import view

我没有收到任何错误信息,但是这个微服务无法运行。
因此,最终我在我的工作区为每个微服务都添加了一个文件夹,例如:
+oneService
+twoService
+threeService

这解决了所有独立微服务的导入错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接