Ошибка отладки Python в VS Code: «pythonPath» недействителен, если указан «python»

Я получаю приглашение с:

Invalid Message: "pythonPath" is not valid if "python" is specified 

и возможность открыть launch.json. Но мой launch.json не содержит ничего, что говорит «pythonPath»:

{
  "configurations": [
    {
      "name": "Docker: Python - General",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "python": {
        "pathMappings": [
          {
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/app"
          }
        ],
        "projectType": "general"
      }
    }
  ]
}

и это мои задачи.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "docker-build",
      "label": "docker-build",
      "platform": "python",
      "dockerBuild": {
        "tag": "cachepurger:latest",
        "dockerfile": "${workspaceFolder}/Dockerfile",
        "context": "${workspaceFolder}",
        "pull": true
      }
    },
    {
      "type": "docker-run",
      "label": "docker-run: debug",
      "dependsOn": ["docker-build"],
      "python": {
        "file": "src/main.py"
      }
    }
  ]
}

и Dockerfile:

# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.9.6-slim

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "src/main.py"]

все создано с помощью команды «Docker: добавить файлы Dockerfiles в рабочую область ...» -> «Python: General». Раньше работало, а сейчас перестало. Я пытался использовать образ Python 3.9.6, так как это образ из моего .venv, но безуспешно. Образ собирается без ошибок, а запуск докера работает нормально. В тот момент, когда он пытается «прикрепить», я получаю это сообщение.

Это вывод терминала:

*  Executing task: docker-build 

> docker image build --pull --file '/Users/philipp/Sites/cache-purger/Dockerfile' --tag 'cachepurger:latest' --label 'com.microsoft.created-by=visual-studio-code' '/Users/philipp/Sites/cache-purger' <

#1 [internal] load build definition from Dockerfile
#1 sha256:c141506ce29f9a418e9f7aa174d1f48de1cda1b771a6710f311fe64b6591e190
#1 transferring dockerfile: 37B done#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 sha256:7b7281b332cffe701548a5bd1f2ad8aa5ef2ad5c7b67d8432ca152c58ad529f9
#2 transferring context: 120B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/python:3.9.6-slim
#3 sha256:fc1a7a5428ef0e03d295fd81aa9c55606d4e031ac5c881a3941276f70f00d422#3 DONE 0.6s

#4 [1/6] FROM docker.io/library/python:3.9.6-slim@sha256:4115592fd02679fb3d9e8c513cae33ad3fdd64747b64d32b504419d7118bcd7c
#4 sha256:e45c2d35d6435658167a7e046bb6121c498edab8c8777f3cd5a56f585eead583
#4 DONE 0.0s

#5 [internal] load build context
#5 sha256:c20427bc601f92346d0d4519c594683dbcd8b4a64b1ca4f59a16ce42d0f217db#5 transferring context: 176.69kB 0.2s done
#5 DONE 0.2s

#8 [4/6] WORKDIR /app
#8 sha256:cd260eca990853ac7a3228b8435b728cf978b08e035684cf2988a4ce596004e6
#8 CACHED

#9 [5/6] COPY . /app
#9 sha256:8261e563e3b0b0cd32854e76a77543449ceca6f5b3fe76de9cd0a1ea8fae3fab
#9 CACHED

#6 [2/6] COPY requirements.txt .
#6 sha256:3d3741721306ef2859b965575ba3fe04d426fb55b1d22dde909fde88f9be8998
#6 CACHED

#7 [3/6] RUN python -m pip install -r requirements.txt
#7 sha256:92a4bcf37798995b7fcd368e190a189642affda38a1ecc4f004f0827567520e6
#7 CACHED

#10 [6/6] RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
#10 sha256:b0b00f3b01ee74a6a813c94699340d78511ccdb89b4b326fd106625803062cb1
#10 CACHED

#11 exporting to image
#11 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#11 exporting layers done
#11 writing image sha256:1a8bf7fd9f7f83ddc25d421eef1c4fb986ef79cdc9bb9709d10ed530c2b4c6c0 done
#11 naming to docker.io/library/cachepurger:latest done
#11 DONE 0.0s *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: docker-run: debug 

> docker container run --detach --tty --name 'cachepurger-dev' --publish-all --mount 'type=bind,source=/Users/philipp/.vscode/extensions/ms-python.python-2023.2.0/pythonFiles/lib/python/debugpy,destination=/debugpy,readonly' --label 'com.microsoft.created-by=visual-studio-code' --entrypoint 'python3' cachepurger:latest <

8baa3597aa97f39641a43f6886b884e139165f83edaca9ae1f99e9f8a760e50e *  Terminal will be reused by tasks, press any key to close it. 
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
226
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваша конфигурация параметров python в файле launch.json неверна.

питон

Полный путь, указывающий на интерпретатор Python, который будет использоваться для отладки.

Подробнее здесь.

Как говорит @ridhwan-saal, код в порядке. Это ошибка последней версии VSCode/Python. Я последовал его совету, и это сработало.

Philipp 14.02.2023 15:20
Ответ принят как подходящий

Ваш код в порядке. Это расширение VSCode/Python, которое было обновлено до версий 1.75 и 2023.02 соответственно, и, следовательно, эта ошибка является новой. Пожалуйста, обратитесь к этому выпуску для постоянного развития ошибки. На данный момент удалите VSCode и переустановите 1.74, а также переустановите расширение python до версии 2023.02, и все будет готово.

Подтвердил, что это работает. Для любых пользователей Debian или производных пользователей вы можете переустановить старый VSCode, выполнив: sudo apt install code=1.74.3-1673284829 (вам не нужно удалять)

Jason 19.02.2023 20:35

Другие вопросы по теме