No support for per-subpackage launch.json + in monorepo: debugger breaks imports that terminal run resolves
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
Hướng nghiên cứu
Bắt đầu bằng cách tái tạo bố cục monorepo và launch.json được cung cấp, sau đó so sánh môi trường của các subprocess Terminal và F5, bao gồm cwd và PYTHONPATH. Truy vết cách debugpy xử lý môi trường và đường dẫn khi khởi chạy; công việc được coi là hoàn tất khi các đường dẫn của người dùng được giữ nguyên hoặc các biến bị ghi đè được tài liệu hóa chính xác, đồng thời việc khởi chạy module được cung cấp không còn thất bại.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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 atpackages/<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:
- Overrides
PYTHONPATHin the subprocess environment. - Sets
cwdto the workspace root unless explicitly overridden. - Does NOT pick up per-folder
python.defaultInterpreterPathor 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
- Monorepo:
C:\D\workspace\packages\api\src\api\__init__.py launch.json:{ "type": "python", "module": "api.main", "cwd": "${workspaceFolder}/packages/api", "env": { "PYTHONPATH": "${workspaceFolder}/packages/api/src" } }- Terminal run:
cd packages/api && python -m api.main— works. - F5 debug:
ModuleNotFoundError: No module named 'api'.
Expected
- debugpy should merge the user-specified
env.PYTHONPATHwith (not replace) its own injected paths. - Or: document precisely which env vars debugpy overwrites so
launch.jsonauthors can compensate.
Related
- #2002 (nested subprocess module resolution) — same root cause, different trigger path
- Ngôn ngữ chính
- Python
- Star
- 2.5k
- Fork
- 205
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 3
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/debugpy
-
pydevd_comm.py start_client() does not set TCP_NODELAY on the connections it opensCó thể đã có người làm @nightcityblade đã nhận 50 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Document "rules"-optionCó thể đã có người làm @nightcityblade đã nhận 39 ngày trước. Đang mởdocumentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
wx.EventLoop() deprecation warningCó thể đã có người làm @nightcityblade đã nhận 37 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
debugpy.configure(python=) is not properly documentedCó thể đã có người làm @nightcityblade đã nhận 48 ngày trước. Đang mởdocumentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
-
Adapter bootstrap fails with ConnectionRefusedError on WSL2 VirtioProxy or hostAddressLoopbackCó thể đã có người làm @nightcityblade đã nhận 4 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
Tất cả issue của microsoft/debugpy
Issue tương tự
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
debpalash/VoiceStudio#2624 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Make Catch2 optional when `RDK_BUILD_CPP_TESTS=OFF`Có thể đã có người làm @pechersky đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
There are a few redundant calls to `fdesc._setCloseOnExec()`Có thể đã có người làm @gudnimg đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày