Использование Python-линтеров с Docker в VS Code - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь заставить линтеры Python работать в VS Code, когда Python и все пакеты установлены в контейнере Docker.

Я раньше не пользовался линтерами. Но насколько я понимаю, как работают линтеры (по крайней мере, в VS Code), мне нужно указать VS Code на интерпретатор Python и при необходимости указать пути к пакетам. И это становится проблемой, если все установлено в контейнере Docker.

Я пытаюсь использовать только функции Docker. Я придумал следующее:

  1. Привязать каталог монтирования Python к некоторой локальной папке
  2. Выберите интерпретатор Python в VS Code из этой папки
  3. При необходимости добавить каталоги для установленных пакетов аналогичным образом (но мне пока не удалось достичь этого этапа)

Я попытался реализовать все, используя пример проекта Django из документации Docker, поэтому мои файлы выглядят следующим образом

docker-compose.yml

version: '3'

services:
    db:
        image: postgres
    web:
        build: .
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
        - .:/code
        - ./.vscode/python:/usr/local/lib/python3.7  # The problem is here
        ports:
        - "8000:8000"
        depends_on:
        - db

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

requirements.txt

Django
psycopg2

Проект Django работает, когда строка - ./.vscode/python:/usr/local/lib/python3.7 закомментирована. Но когда я пытаюсь связать папку монтирования Python так же, как смонтированную папку /code, у меня не только не открывается содержимое этой папки, доступное локально, но проект Django перестает работать.

Можно ли монтировать исполняемый файл Python таким образом? Или, может быть, есть лучший способ использовать произвольные линтеры Python при использовании VS Code и Docker? Было бы здорово избежать:

  • создание локально той же среды, что и в контейнере Docker
  • установка расширений, которые не позволяют использовать произвольные линтеры

1 Ответ

0 голосов
/ 16 сентября 2018

Не сторона Docker, только некоторые соображения по поводу кода VS

Код VS использует два механизма разрешения подсветки Python: окружение и линтер.

Для среды вы можете проверить https://code.visualstudio.com/docs/python/environments,, в которой в основном говорится, что Python доступен в системе по пути, или выберите виртуальную среду, которую вы создаете, или укажите путь к исполняемому файлу Python в json.

https://code.visualstudio.com/docs/python/linting указывает установить linter с pip, запускаемым из среды, которую вы настроили, или указать путь к linter в json.

Так что, похоже, единственное, что вам нужно, чтобы реплицировать линковку VSCode python - это python executetabe, установка конфигурации pylint и json для vscode.

...