python模块的vscode导入错误

问题描述 投票:9回答:4

我试图从一个目录级别进行python导入。

import sys

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

当我尝试运行构建任务时,我从VSCode收到错误:

ImportError:没有名为cn_modules的模块

相同的代码在终端(python)没有任何错误的情况下工作。 当我尝试从VSCode运行构建任务运行它时,我遇到了问题。 这里有什么问题的任何线索?

安静了一段时间,但无法解决这个问题,任何帮助表示赞赏。


注意:当我使用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}"
            }
        ]
    }

tasks.json

{
        "version": "0.1.0",
        "command": "/usr/bin/python",
        "isShellCommand": true,
        "args": ["${file}"],
        "showOutput": "always",
        "env": {},
        "envFile": "${workspaceRoot}/.env",
        "pythonPath": "${config:python.pythonPath}"
 }
python-2.7 visual-studio-code vscode-settings vscode-tasks
4个回答
7
投票

我试着在我的launch.json中添加它,然后它可以工作!

"env": {"PYTHONPATH": "${workspaceRoot}"}

下面是我的launch.json

        "name": "Python: Current File (Integrated Terminal)",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "cwd": "${workspaceRoot}",
        "env": {"PYTHONPATH": "${workspaceRoot}"},
        "console": "integratedTerminal"

希望它可以帮到你! :)


1
投票

谢谢Honza Kalfus jankalfus

我注意到如果我使用文件 - >关闭文件夹然后文件 - >打开文件夹...并再次打开项目文件夹,错误就消失了。如果我只是重新启动VS代码,我会不断收到错误。我假设某些内部缓存被清除了?

在这里找到https://github.com/Microsoft/vscode/issues/10391


0
投票

就我而言,这与我们无关

"env": {"PYTHONPATH": "${workspaceRoot}"}

这是我的文件夹/模块结构:

/Dev/csproj/deploy/test.py 
/Dev/csproj/util/utils.py

在test.py中,它导入utils函数

import sys
sys.path.append('../')
from util.utils import get_keyvault_secret

如果我在终端文件夹/ Dev / csproj / deploy /中运行test.py,则没有问题。 但是,如果我想调试test.py,我得到“ModuleNotFoundError”的例外 为了解决这个问题,我将其添加到我的调试配置launch.json中

"cwd": "${workspaceRoot}\\Dev\\csproj\\deploy",

-2
投票

在launch.json文件中,可以尝试设置env:{},作为“env”:

{"PYTHONPATH":"${workspaceRoot}"}

© www.soinside.com 2019 - 2024. All rights reserved.