首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio Code使用python3在docker容器中调试Python2.7应用程序

Visual Studio Code使用python3在docker容器中调试Python2.7应用程序
EN

Stack Overflow用户
提问于 2021-09-28 11:11:32
回答 1查看 40关注 0票数 0

我正在尝试在docker容器中调试我的应用程序。这个应用是用paython2.7编写的,但是VS Code试图用python3来调试它。因此,它不能解析包并抛出异常。

有什么想法吗?

我的配置:

tasks.json

代码语言:javascript
复制
    {
      "version": "2.0.0",
      "tasks": [
        {
          "type": "docker-run",
          "label": "docker-run: debug",
          "dependsOn": ["docker-build"],
          "dockerRun": {
            "containerName": "account",
            "image": "account:latest",
            "env": {},
            "volumes": [
              {
                "containerPath": "/code",
                "localPath": "${workspaceFolder}"
              }
            ],
            "ports": [
              {
                "containerPort": 8086,
                "hostPort": 8086
              },
              {
                "containerPort": 8085,
                "hostPort": 8085
              }
            ]
          },
          "python": {
            "args": ["--config=/code/config/account.conf.localstage"],
            "file": "skoobe-accountd"
          }
        },
        {
          "label": "docker-build",
          "type": "docker-build",
          "dockerBuild": {
              "context": "${workspaceFolder}",
              "dockerfile": "${workspaceFolder}/Dockerfile.arm.dev",
              "tag": "account:latest"
          }
        }
      ]
    }

launch.json

代码语言:javascript
复制
    {
      "configurations": [
        {
          "name": "Debug Account",
          "type": "docker",
          "request": "launch",
          "preLaunchTask": "docker-run: debug",
          "python": {
            "pathMappings": [
              {
                "localRoot": "${workspaceFolder}",
                "remoteRoot": "/code"
              }
            ],
            "projectType": "general"
          }
        }
      ]
    }

settings.json

代码语言:javascript
复制
    {
        "python.linting.pylintEnabled": true,
        "python.pythonPath": "/usr/bin/python"
    }

Dockerfile

代码语言:javascript
复制
    FROM python:2.7.18

    ENV AWS_ACCESS_KEY_ID="xxx"
    ENV AWS_SECRET_ACCESS_KEY="xxx"
    ENV AWS_DEFAULT_REGION="xxx"
    ENV SQS_QUEUE="xxx"
    ENV SQS_CHANGE_QUEUE="xxx"


    # RUN mkdir -p /root/.ssh && \
    #    chmod 0700 /root/.ssh


    # RUN apt-get update && \
    #    apt-get install openssh-server -y

    WORKDIR /code/
    ADD requirements.txt /code/
    RUN pip install -r requirements.txt

    ADD . /code/

    WORKDIR tools/
    RUN python setup.py install
    WORKDIR /code/
    # RUN pip install -r requirements.txt

    CMD ["python", "accountd", "--config=/code/config/account.conf.localstage"]
EN

回答 1

Stack Overflow用户

发布于 2021-09-30 15:34:24

经过一番调查,我找到了一个解决方案:

我将lunch.json修改为以下内容:

代码语言:javascript
复制
    {
        "version": "0.2.0",
        "configurations": [
          {
            "name": "Python: Remote Attach",
            "type": "python",
            "request": "attach",
            "port": 5678,
            "host": "localhost",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "/code"
                }
            ]
          }
        ]
    }

然后,我在入口Python文件中添加了以下几行:

代码语言:javascript
复制
import ptvsd
ptvsd.enable_attach(address=('0.0.0.0', 5678))

从VS code IDE运行docker容器后,我可以在调试模式下运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69360649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档