Настройка среды разработки python с помощью Docker (с компоновкой и завершением кода в vscode)

#python #docker #visual-studio-code

#python #docker #visual-studio-code

Вопрос:

Настройка

Я изучаю способы настройки среды разработки python внутри контейнера docker.

В моем локальном (хостовом) У меня есть каталог проекта:

 .
├── Dockerfile
└── foo.py
  

Где мой Dockerfile :

 FROM python:latest

RUN pip install --upgrade pip
RUN pip install matplotlib

RUN mkdir /src
WORKDIR /src

ENTRYPOINT [ "python" ]
  

и сценарий является:

 try:
    import matplotlib
    print("import successfully")
except ImportError:
    print("unable to import matplotlib")
  

Предполагая, что я не matplotlib установлен на моем хосте, тогда python foo.py получается unable to import matplotlib . Когда я запускаю внутри контейнера:

 docker run -it --rm -v ~/tmp/:/src/ py-deb-test foo.py
  

Я получаю import successfully .

Проблема

Теперь я намерен поработать над своим кодом с использованием vscode на локальном хосте и запустить его в контейнере. Проблема в том, что в этой настройке я не знаю, как указать vscode на «установку» python, запущенную в контейнере. Я подумал о запуске контейнера и «монтировании» python из контейнера в локальное местоположение и указании vscode на это местоположение. Но пока это не сработало.

Без решения этой проблемы vscode не знает, какие пакеты установлены, где найти компоновщик и т.д…

Любая помощь и идеи приветствуются!

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

1. Я предполагаю, что вы запускаете скрипт python через какой-либо пакет для vs code, такой как code runner ?

2. Нет. Я указал, что я либо запускаю его непосредственно со своего хост-терминала, либо с помощью docker run .

3. VSCode выпустила пакет расширений для удаленной разработки , который, похоже, решает именно эту проблему. Я этим еще не пользовался.

Ответ №1:

Хорошие новости. Ребята из VSCode недавно выпустили то, что, похоже, именно то, что я искал. Используя containers remote VSCode, теперь можно запускать редактор в контейнере, который имеет именно ту среду, которая требуется. В этом репозитории я скомпилировал минимальный пример и надеюсь, что вы найдете его полезным.

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

1. Это было так, так, так полезно. Спасибо.

Ответ №2:

Официальной поддержки этого сценария прямо сейчас нет, но вы можете следить за службой поддержки удаленного интерпретатора для отслеживания проблем, чтобы узнать, когда у нас появится какое-то решение.

Ответ №3:

Если это все еще кому-то интересно:

Я настроил контейнер docker с Python, R и Latex, а также с завершением кода, компоновкой и компиляцией для этих языков. Также предоставляется файл devcontainer VS-Code, который устанавливает настройки на разумные значения по умолчанию (особенно переменные path, чтобы devcontainer находил исполняемые файлы при запуске).

Вы можете найти это здесь.