https://github.com/microsoft/vscode-docker/blob/master/resources/python/launcher.py
这个文件有一部分 args 被传递给 docker exec。
dockerExecArgs = ['docker', 'exec', '-d', containerId, 'python', '/debugpy/launcher'] + args
我的调试失败,因为容器接收python
作为python2.7,但是我的程序需要python3,在容器中是可用的。 如果我将此 launcher.py 文件更改为 python3,则它可以工作。 我可以以某种方式将它传递给启动器吗?
@dwbelliston您使用的是什么 Python 基础映像? 我很惊讶python
映射到 Python2.7 的任何地方...
这是 dockerfile 和 launch.json。
来自 docker 文件的基本图像在这里: https :
Dockerfile:
# https://github.com/GoogleCloudPlatform/cloud-sdk-docker
# Image provides: gcloud, gsutil, bq, python and more
FROM gcr.io/google.com/cloudsdktool/cloud-sdk:latest
COPY requirements.txt /opt/src/
RUN pip3 install -r /opt/src/requirements.txt
COPY src/ /opt/src
WORKDIR /opt/src/
CMD ["python3", "main.py"]
启动文件
{
"name": "Docker:Raw",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run:raw",
"platform": "python",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}/raw/src",
"remoteRoot": "/opt/src"
}
],
"projectType": "general"
}
}
谢谢! 看起来该图像确实使用 2.7 作为默认值。 我认为我们可以安全地将我们的扩展中的 launcher.py 更改为使用python3
因为它按预期在python:3.8-slim-buster
。
作为解决此问题之前的解决方法,您可以在 Docker 扩展的资源中对launcher.py
进行相同的更改。
窗户: %USERPROFILE%\.vscode\extensions\ms-azuretools.vscode-docker-1.3.1\resources\python\launcher.py
Mac/Linux: ~/.vscode/extensions/ms-azuretools.vscode-docker-1.3.1/resources/python/launcher.py
将python3
17 行的dockerExecArgs
python
更改python3
。
或者,您可以复制该文件并在启动配置中使用debugLauncherPath
属性,但这可能是_more_ 的工作。
我们已经发布了 Docker 1.4.0,其中包含对此的修复。