如何为App Engine应用设置vscode Python调试器?

时间:2018-09-09 22:21:46

标签: python google-app-engine visual-studio-code

按照官方wiki中的步骤操作后,在使用断点或设置断点启动时,我始终收到以下错误:

    /ptvsd/wrapper.py", line 423, in pydevd_request
    os.write(self.pipe_w, s.encode('utf8'))
  File "google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/stubs.py", line 40, in os_error_not_implemented
    raise OSError(errno.ENOSYS, 'Function not implemented')
OSError: [Errno 38] Function not implemented

该应用程序无论如何都会运行,但是断点不会被击中。似乎ptvsd尝试使用被App Engine沙盒环境阻止的某些方法。我在python virtualenv中运行vscode,有什么线索吗?

2 个答案:

答案 0 :(得分:1)

我的解决方案是使用PyCharm社区版的调试器,其类似的功能更强大的IDE和调试器可用于Python特定的调试。

答案 1 :(得分:0)

我试图找到一种可靠的方法来消除此错误,但是事实证明这非常困难。不过,这里有一些建议:

  • 按照here的说明运行App Engine开发服务器时,请使用--threadsafe_override=default:false标志。

  • 必须从vscode(例如,通过任务)启动App Engine开发服务器,而不是从单独的终端窗口启动。

  • 如果仍然出现错误,请停止调试器,终止任务并重新启动所有程序。

(在调试器正确命中断点之后,但奇怪的是,将调用栈设置为主线程而不是包含断点的线程,您需要在调用栈窗口中手动单击正确的线程。)