带有打印语句的VS代码python调试器错误

时间:2018-09-23 01:55:02

标签: python python-3.x visual-studio-code vscode-debugger

因此,当我尝试在VS代码上调试任何Python脚本时,该脚本具有打印或输入语句,就会崩溃,并抛出“ AttributeError”,提示“ NoneType”对象没有属性“ write”,任何想法为什么会这样?我在Google上找不到任何相关信息 这是错误的屏幕截图:Link to the screenshot 这也是我的配置文件:

{
// Use IntelliSense para saber los atributos posibles.
// Mantenga el puntero para ver las descripciones de los existentes atributos 
// Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File (Integrated Terminal)",
        "type": "python",
        "request": "launch",
        "stopOnEntry": true,
        "program": "${file}",
        "console": "integratedTerminal"
    },
    {
        "name": "Python: Attach",
        "type": "python",
        "request": "attach",
        "port": 5678,
        "host": "localhost"
    },
    {
        "name": "Python: Django",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "console": "integratedTerminal",
        "args": [
            "runserver",
            "--noreload",
            "--nothreading"
        ],
        "django": true
    },
    {
        "name": "Python: Flask",
        "type": "python",
        "request": "launch",
        "module": "flask",
        "env": {
            "FLASK_APP": "app.py"
        },
        "args": [
            "run",
            "--no-debugger",
            "--no-reload"
        ],
        "jinja": true
    },
    {
        "name": "Python: Current File (External Terminal)",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "externalTerminal"
    }
]

}

2 个答案:

答案 0 :(得分:1)

VSCODE对我来说很好

a)安装VSCODE或升级到版本1.28.1 b)刷新Python扩展

如果您遇到超时等问题,请阅读 https://github.com/Microsoft/vscode-python/issues/2410 非常小心

编辑python扩展的settings.json a)禁用 终端:激活环境 在使用扩展程序创建的终端中激活Python环境。

b)启用 终端:在文件目录中执行 在终端中执行文件时,是否使用文件目录中的execute代替当前打开的文件夹。

c)删除pythonW并将python放入 Python路径 Python路径,您可以通过修改此设置以包含完整路径来使用Python的自定义版本。

以上所有内容 https://github.com/Microsoft/vscode-python/issues/2410

尽管结局不错,但我可以预见不稳定版本的未来 以获得出色的VSCODE甚至更好的Python扩展

答案 1 :(得分:0)

属性错误通常意味着您使用的任何对象实际上都不是。之所以会发生这种情况,是因为您的通话上游或下游发生了某些事情。

就您的单行打印语句而言,我唯一想到的可能就是用双引号引起来。.用双引号引起这种情况并没有什么意义,但谁知道。

尝试时会发生什么

print('I will crash!!!')

如果仍然失败,那么我想说的是vs正在尝试写入文件,配置,日志,控制台或其他内容,并且遇到了权限问题。

编辑 在查看closesr后,您会看到有两个以

开头的文件
"name": "Python: Current File ....

因此,我重写了您的配置文件,它仍然包括已命名的特定文件及其配置,但是我删除了当前文件条目之一并将其设为基本。

{
// Use IntelliSense para saber los atributos posibles.
// Mantenga el puntero para ver las descripciones de los existentes atributos 
// Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File (External Terminal)",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "externalTerminal"
    },
    {
        "name": "Python: Attach",
        "type": "python",
        "request": "attach",
        "port": 5678,
        "host": "localhost"
    },
    {
        "name": "Python: Django",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "console": "integratedTerminal",
        "args": [
            "runserver",
            "--noreload",
            "--nothreading"
        ],
        "django": true
    },
    {
        "name": "Python: Flask",
        "type": "python",
        "request": "launch",
        "module": "flask",
        "env": {
            "FLASK_APP": "app.py"
        },
        "args": [
            "run",
            "--no-debugger",
            "--no-reload"
        ],
        "jinja": true
    }
]
}

我已将其设置为使用外部控制台(标准Windows cmd)。如果要使用vs控制台,请替换

{
    "name": "Python: Current File (External Terminal)",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "externalTerminal"
},

{
    "name": "Python: Current File (Integrated Terminal)",
    "type": "python",
    "request": "launch",
    "stopOnEntry": true,
    "program": "${file}",
    "console": "integratedTerminal"
},

不要忘了先保存旧配置文件的副本。这样,如果VS无法手动更改此文件,则可以随时还原。

我正在寻找VS无法确定也要输出哪个终端的可能性,但是同时您只能在调试时得到它。...

现在我确实在配置中看到一个标志,表示没有调试,但这是针对flask应用程序的。