python模块的vscode导入错误

Cha*_*yak 13 python-2.7 visual-studio-code vscode-settings vscode-tasks

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

import sys

sys.path.append('..')
from cn_modules import exception
Run Code Online (Sandbox Code Playgroud)

当我尝试运行构建任务时,我从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}"
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

tasks.json

{
        "version": "0.1.0",
        "command": "/usr/bin/python",
        "isShellCommand": true,
        "args": ["${file}"],
        "showOutput": "always",
        "env": {},
        "envFile": "${workspaceRoot}/.env",
        "pythonPath": "${config:python.pythonPath}"
 }
Run Code Online (Sandbox Code Playgroud)

Phi*_*pWu 15

我尝试将其添加到我的launch.json,然后成功了!

"env": {"PYTHONPATH": "${workspaceRoot}"}
Run Code Online (Sandbox Code Playgroud)

下面是我的 launch.json

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

希望它能对你有所帮助!:)

  • 在哪里可以找到 launch.json? (5认同)
  • 最新的 vscode 中不再找到 launch.json。 (3认同)
  • @JohnJiang 如果没有 .vscode 目录,你可以创建一个(在项目目录中)。然后你可以在其中创建 launch.json 。 (3认同)
  • 之后我还需要重新启动 VS Code。 (2认同)
  • @JamesHuang 配置在“launch.json”文件中定义,该文件存储在工作区的“.vscode”文件夹中。如果不存在,可以通过[侧边栏的调试菜单](https://code.visualstudio.com/docs/python/debugging#_initialize-configurations)对其进行初始化。 (2认同)

Mub*_*ved 11

下面给出的解决方案只对我有用。

  1. Ctrl+Shift+P
  2. 类型: Configure Language Specific Setting
  3. 然后选择 Python
  4. settings.json将打开。如果有这样的一行,请检查此 JSON 文件:
{"python.jediEnabled": false}
Run Code Online (Sandbox Code Playgroud)

(按Ctrl+F然后粘贴上一行可以快速找到)

  1. 如果是,则删除或注释此行,保存文件并重新加载 VScode。
  2. 完毕!

  • 如果你的伤和我的一样 - `python.jedi` 在做什么?请参阅[此](/sf/ask/3912801231/ Between-jedi-and-python-language-server-in-vs-code-ide) (7认同)

小智 8

在您的 launch.json 文件中,更改env:{}为:

"env": {"PYTHONPATH": "${workspaceRoot}"}
Run Code Online (Sandbox Code Playgroud)

  • launch.json 位于哪里? (8认同)

Dyl*_*ang 6

就我而言,这与

"env": {"PYTHONPATH": "${workspaceRoot}"}
Run Code Online (Sandbox Code Playgroud)

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

/Dev/csproj/deploy/test.py 
/Dev/csproj/util/utils.py
Run Code Online (Sandbox Code Playgroud)

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

import sys
sys.path.append('../')
from util.utils import get_keyvault_secret
Run Code Online (Sandbox Code Playgroud)

如果我在终端文件夹 /Dev/csproj/deploy/ 中运行 test.py 没有问题。
但是如果我想在 VSCode(在 workspaceRoot 下)调试 test.py,我得到了“ModuleNotFoundError”的异常
来修复它,我将它添加到我的调试配置 launch.json

"cwd": "${workspaceRoot}\\Dev\\csproj\\deploy",
Run Code Online (Sandbox Code Playgroud)


dca*_*661 5

感谢 Honza Kalfus jankalfus

我注意到,如果我使用 File -> Close folder 然后 File -> Open Folder... 并再次打开项目文件夹,错误就会消失。如果我只是重新启动 VS Code,则会不断收到错误消息。我认为某些内部缓存被清除了?

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