我终于让它与远程调试一起工作了.我不得不在我的本地pip3安装ptvsd == 3.0.0,并确保我的docker容器的requirements.txt具有相同的版本. (注意:最新版本3.2.1不起作用)
我必须做的是在烧瓶应用程序的app.py中添加一些代码.我最初在启动容器时得到了地址已经在使用中的错误,所以我添加了套接字代码,在第一次成功连接调试器之后我似乎不再需要它了(奇怪我知道,但这就是为什么我把它留在了案件别人得到那个错误)
try:
import ptvsd
# import socket
# sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# sock.close()
ptvsd.enable_attach(secret=None,address=('0.0.0.0',5050))
ptvsd.wait_for_attach()
except Exception as ex:
print('Not working: ')
我也把调试kwarg从app.py中的app.run()中取出了烧瓶app.
这一切都让我能够连接调试器,但断点是“未验证”,因此最后必须发生的是remote.Root的launch.json中的app.py路径.我会说我创建了一个小的测试api来使这个工作,它只需要第一级路径(即./ app而不是/app/app/app.py)这里是我做的测试api的github( https://github.com/tomParty/docker_python).因此,如果调试器正在附加,但您的断点未经验证,请使用remoteRoot的路径
"remoteRoot": "/nomz/nomz/app.py"