#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 находил исполняемые файлы при запуске).
Вы можете найти это здесь.