Skip to content

Path-only pythonProjects entries crash manager initialization #1666

Description

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions