因此,当我尝试在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"
}
]
}
答案 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应用程序的。