microsoft / microsoft/vscode-python-debugger

Could not find platform independent libraries <prefix> when debugging tests in VS Code

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

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

triage-needed
主要言語
TypeScript
スター
181
フォーク
126
平均マージ
2日 3時間
マージ済み PR(30日)
3

説明

I'm trying to write a plugin for QGIS and some tests:

import os
import sys
import unittest

from qgis.core import QgsVectorLayer

class Whatever(unittest.TestCase):
    def test_1(self):
        print(f"PATH: { os.environ["PATH"] }")
        print(f"PYTHONPATH: { os.environ["PYTHONPATH"] }")
        print(f"PYTHONHOME: { os.environ["PYTHONHOME"] }")
        print(f"Executable: { sys.executable }")

        layer = QgsVectorLayer("mylayer")

I also have a launch.json like this one:

{
  "version": "0.2.0",
  "configurations": [
    {
        "name": "Python Debugger: Debug Tests",
        "type": "debugpy",
        "request": "launch",
        "console": "integratedTerminal",
        "purpose": ["debug-test"],
        "cwd": "${workspaceFolder}",
        "envFile": "${workspaceFolder}/.env"
    }
  ]
}

and a settings.json:

{
    "python.defaultInterpreterPath": "C:/OSGeo4W/bin/python.exe",
    "python.analysis.extraPaths": [
        "C:/OSGeo4W/apps/qgis-ltr/python"
    ],
    "python.analysis.autoImportCompletions": true,
    "python.autoComplete.extraPaths": ["C:/OSGeo4W/apps/qgis-ltr/python"],
    "python.testing.unittestArgs": [
        "-v",
        "-s",
        "tests/",
        "-p",
        "*test.py"
    ],
    "python.testing.pytestEnabled": false,
    "python.testing.unittestEnabled": true
}

and finally my .env-file:

PYTHONHOME=C:/OSGeo4W/apps/Python312
PYTHONPATH=C:/OSGeo4W/apps/qgis-ltr/python
PATH=C:/OSGeo4W/apps/qgis-ltr/bin;C:/OSGeo4W/apps/qt5/bin;C:/OSGeo4W/apps/Python312/Scripts;C:/OSGeo4W/bin;C:/Windows/system32;C:/Windows;C:/Windows/system32/WBem
GDAL_DATA=C:/OSGEO4W/share/gdal
GDAL_DRIVER_PATH=C:/OSGEO4W/bin/gdalplugins
GDAL_FILENAME_IS_UTF8=YES
GS_LIB=C:/OSGeo4W/apps/gs/lib
GEOTIFF_CSV=C:/OSGEO4W/share/epsg_csv
O4W_QT_BINARIES=C:/OSGEO4W/apps/Qt5/bin
O4W_QT_DOC=C:/OSGEO4W/apps/Qt5/doc
O4W_QT_HEADERS=C:/OSGEO4W/apps/Qt5/include
O4W_QT_LIBRARIES=C:/OSGEO4W/apps/Qt5/lib
O4W_QT_PLUGINS=C:/OSGEO4W/apps/Qt5/plugins
O4W_QT_PREFIX=C:/OSGEO4W/apps/Qt5
O4W_QT_TRANSLATIONS=C:/OSGEO4W/apps/Qt5/translations
OSGEO4W_ROOT=C:/OSGeo4W
QT_PLUGIN_PATH=C:/OSGEO4W/apps/qgis-ltr/qtplugins
QT_QPA_PLATFORM=windows:altgr
QGIS_PREFIX_PATH=C:/OSGEO4W/apps/qgis
QGIS_PLUGINPATH=D:/git/QgisPlugIns

When I click on the gutter within the test-explorer to debug the above test, I get the forementioned error. However when I just run the test, everything works fine. I already duplictaed the variables from the env-file to the launch.json-file without any success.

I also tried to put these variables into the settings.json-file into the "terminal.integrated.env.windows-section and started a python-interpreter in the terminal. I wrote this script:

from qgis.core import QgsVectorLayer

and it worked. So afterall I can confirm the above paths are 100% correct. However I cannot make it to have them work in both Test-Explorer and in the Terminal. Having them in env-file only makes terminal break ("ImportError: DLL load failed while importing _core: The specified module could not be found". This error relates to the QgsVectorLayer-import-statement), having them in the settings.json only makes test-explorer break. Having them in both leads to "Invalid message: Found duplicate in "env": PATH".

This is my VS Code version:

Version: 1.106.3
Commit: bf9252a2fb45be6893dd8870c0bf37e2e1766d61
Date: 2025-11-25T22:28:18.024Z
Electron: 37.7.0
ElectronBuildId: 12781156
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.26100

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

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

調査の方向性

提供された launch.json、settings.json、.env を VS Code Test Explorer で使用して失敗を再現し、デバッグ時と通常時のテスト環境を比較します。まず、デバッグテストの起動時に環境変数がどのように組み立てられるかを追跡します。完了の条件は、QGIS Python 環境でテストをデバッグでき、通常のテスト実行とターミナルでのインポートが重複した PATH エントリなしで引き続き機能することです。

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

評価

技術スタック
python, vscode
領域
devtools, testing
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

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

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