microsoft / microsoft/vscode-python-environments

Path-only pythonProjects entries crash manager initialization

Abierto
#1,666 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@eleanorjboyd ya está trabajando en esto.

Desde el 5/8/2026.

Lenguaje dominante
TypeScript
Estrellas
138
Forks
62
Merge medio
1 d 4 h
PR fusionados (30 d)
35

Descripción

Environment data

  • Python Environments extension version: 1.36.0 (latest Marketplace stable); also reproduced from main at f61acdf535b9c8e8983e6b600048f3f4de1425e1 (package version 1.37.0)
  • Python extension (ms-python.python) version: 2026.4.0
  • VS Code version (Help → About): 1.130.0 (1b6a188127eeaf9194f945eb6eb89a657e93c54c)
  • OS and version: macOS 15.3.2 arm64
  • Python version: 3.9.6
  • Environment manager in use: venv
  • Shell: zsh
  • Remote / container scenario: none
  • Workspace type: single-folder mono-repo
  • Is this a regression? Unknown

Repro Steps

  1. Start VS Code with empty --user-data-dir and --extensions-dir directories.

  2. Install only ms-python.python and ms-python.vscode-pylance; this installs ms-python.vscode-python-envs as a dependency.

  3. Open a fresh folder containing backend/main.py and backend/.venv.

  4. Add the following workspace settings:

    {
        "python.useEnvironmentsExtension": true,
        "python.analysis.usePerProjectEnvironments": true,
        "python-envs.pythonProjects": [
            {
                "path": "backend"
            }
        ]
    }
    
  5. Reload the window and open backend/main.py.

Expected behavior

The path-only project entry is accepted. Because envManager and packageManager are optional in the contributed setting schema, the extension uses python-envs.defaultEnvManager and python-envs.defaultPackageManager.

Actual behavior

Environment-manager initialization repeatedly throws TypeError: Cannot read properties of undefined (reading 'length'). Post-initialization telemetry and subsequent environment lookups fail, preventing reliable project environment resolution.

getDefaultEnvManagerSetting() and getDefaultPkgManagerSetting() dereference optional object properties without checking whether they exist:

if (settings && settings.envManager.length > 0) {
// ...
if (settings && settings.packageManager.length > 0) {

Explicitly adding both manager properties avoids the exception, but duplicates defaults that the setting schema already defines and should not be required.

Logs

Python-envs extension version: 1.36.0
Post-initialization tasks failed: TypeError: Cannot read properties of undefined (reading 'length')
    at getDefaultEnvManagerSetting (.../ms-python.vscode-python-envs-1.36.0-darwin-arm64/dist/extension.js:2:389988)
    at sendManagerSelectionTelemetry (.../dist/extension.js:2:286259)

TypeError: Cannot read properties of undefined (reading 'length')
    at getDefaultEnvManagerSetting (.../ms-python.vscode-python-envs-1.36.0-darwin-arm64/dist/extension.js:2:389988)
    at waitForEnvManager (.../dist/extension.js:2:313554)
    at async getEnvironment (.../dist/extension.js:2:384509)

Additional context

The reproduction used a genuinely empty VS Code profile with no third-party extensions or pre-existing user settings.

A local fix that treats omitted manager properties as fallback-to-default values removes the runtime errors in a second fresh profile. It also passes the complete unit-test suite (1,429 passing) and lint.

AI disclosure: Prepared with assistance from OpenAI Codex.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.