Как заставить black — форматер python — работать с контейнером vscode dev?

#python #python-black #vscode-devcontainer

Вопрос:

В настоящее время я являюсь разработчиком в контейнере для разработчиков и пытаюсь использовать black в качестве форматирования для python. Однако мне не удалось заставить это сработать. Вот мой .devcontainer.json

 {
    "name": "api",
    "dockerComposeFile": ["../docker-compose.yml", "../docker-compose.devcontainer.yml"],
    "service": "api",
    "workspaceFolder": "/workspace/api",

    "settings": {
        "python.defaultInterpreterPath": "/usr/local/lib/python3.8",
        "python.formatting.provider":"black",
        "python.formatting.blackPath":"/usr/local/lib/python3.8/site-packages/black",
        "python.linting.enabled": true,
        "python.linting.pylintEnabled": true,
        "python.linting.mypyEnabled":true,
        "editor.insertSpaces": true,
        "editor.tabSize": 4,
        "editor.detectIndentation":false,
        "editor.formatOnSave":true,
    },
    "shutdownAction": "none",
    "extensions": ["ms-python.python", "ms-python.vscode-pylance","ms-azuretools.vscode-docker"],
    //this is port forwarding for the debugger
    "forwardPorts": [8000]
}
 

Комментарии:

1. Одно из возможных решений здесь: github.com/microsoft/vscode-python/issues/7165

2. @Ezra , он уже установлен с помощью pip

Ответ №1:

Я обновил пути до python и black и перестроил контейнер, а затем на колоколе справа внизу появилась маленькая точка. Я нажал на нее. Я не могу правильно запомнить сообщение, но в нем меня просят переключиться на форматирование python (что-то в этом роде) Я нажал «ОК», и это сработало!

 {
    "name": "api",
    "dockerComposeFile": ["../docker-compose.yml", "../docker-compose.devcontainer.yml"],
    "service": "api",
    "workspaceFolder": "/workspace/api",

    "settings": {
        "python.defaultInterpreterPath": "/usr/local/bin/python",
        "python.formatting.provider":"black",
        "python.formatting.blackPath":"/usr/local/bin/black",
        "python.linting.enabled": true,
        "python.linting.pylintEnabled": true,
        "python.linting.mypyEnabled":true,
        "editor.insertSpaces": true,
        "editor.tabSize": 4,
        "editor.detectIndentation":false,
        "editor.formatOnSave":false,
        "[python]": {
            "editor.formatOnSave": true
        },
        "python.testing.pytestPath":"/usr/local/bin/pytest",
        "python.testing.pytestEnabled":true
    },
    "shutdownAction": "none",
    "extensions": ["ms-python.python", "ms-python.vscode-pylance","ms-azuretools.vscode-docker"],
    //this is port forwarding for the debugger
    "forwardPorts": [8000]
}