Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

No support for per-subpackage launch.json + in monorepo: debugger breaks imports that terminal run resolves

オープン
#2,047 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
python, vscode
領域
devtools

調査の方向性

まず、提供された monorepo のレイアウトと launch.json を再現し、次に cwd と PYTHONPATH を含めて、ターミナルと F5 のサブプロセス環境を比較します。起動時の debugpy による環境とパスの処理を追跡します。ユーザーパスが保持されるか、上書きされた変数が正確に文書化され、提供されたモジュールの起動が失敗しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Environment
  • OS: Windows 11 Enterprise
  • VS Code: 1.104.x
  • debugpy: latest (1.8.x)
  • Python: 3.11
  • Repo layout: monorepo with src/ layout; each sub-package at packages/<name>/src/<name>/
  • Shell: PowerShell
Problem

In a monorepo with a src/ layout, running python -m packages.api.main from the workspace root works in a terminal (with PYTHONPATH=packages/api/src). But when launching the same target via VS Code's debugger ("module": "packages.api.main" in launch.json), debugpy prepends its own path manipulation that:

  1. Overrides PYTHONPATH in the subprocess environment.
  2. Sets cwd to the workspace root unless explicitly overridden.
  3. Does NOT pick up per-folder python.defaultInterpreterPath or env activation from a subfolder .vscode/settings.json.

Result: imports that resolve in a terminal fail in the debugger with ModuleNotFoundError, because debugpy's path injection shadows the manually set PYTHONPATH.

Steps to Reproduce
  1. Monorepo: C:\D\workspace\packages\api\src\api\__init__.py
  2. launch.json:
    {
      "type": "python",
      "module": "api.main",
      "cwd": "${workspaceFolder}/packages/api",
      "env": { "PYTHONPATH": "${workspaceFolder}/packages/api/src" }
    }
    
  3. Terminal run: cd packages/api && python -m api.main — works.
  4. F5 debug: ModuleNotFoundError: No module named 'api'.
Expected
  • debugpy should merge the user-specified env.PYTHONPATH with (not replace) its own injected paths.
  • Or: document precisely which env vars debugpy overwrites so launch.json authors can compensate.
Related
  • #2002 (nested subprocess module resolution) — same root cause, different trigger path
主要言語
Python
スター
2.5k
フォーク
205
平均マージ
1日 9時間
マージ済み PR(30日)
3

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/debugpy のほかの issue

microsoft/debugpy の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。