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
-
Start VS Code with empty --user-data-dir and --extensions-dir directories.
-
Install only ms-python.python and ms-python.vscode-pylance; this installs ms-python.vscode-python-envs as a dependency.
-
Open a fresh folder containing backend/main.py and backend/.venv.
-
Add the following workspace settings:
{
"python.useEnvironmentsExtension": true,
"python.analysis.usePerProjectEnvironments": true,
"python-envs.pythonProjects": [
{
"path": "backend"
}
]
}
-
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'). The Python extension can consequently report an activation failure, and per-project interpreter/Pylance integration is unreliable.
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.
Environment data
mainatf61acdf535b9c8e8983e6b600048f3f4de1425e1(package version 1.37.0)ms-python.python) version: 2026.4.01b6a188127eeaf9194f945eb6eb89a657e93c54c)venvRepro Steps
Start VS Code with empty
--user-data-dirand--extensions-dirdirectories.Install only
ms-python.pythonandms-python.vscode-pylance; this installsms-python.vscode-python-envsas a dependency.Open a fresh folder containing
backend/main.pyandbackend/.venv.Add the following workspace settings:
{ "python.useEnvironmentsExtension": true, "python.analysis.usePerProjectEnvironments": true, "python-envs.pythonProjects": [ { "path": "backend" } ] }Reload the window and open
backend/main.py.Expected behavior
The path-only project entry is accepted. Because
envManagerandpackageManagerare optional in the contributed setting schema, the extension usespython-envs.defaultEnvManagerandpython-envs.defaultPackageManager.Actual behavior
Environment-manager initialization repeatedly throws
TypeError: Cannot read properties of undefined (reading 'length'). The Python extension can consequently report an activation failure, and per-project interpreter/Pylance integration is unreliable.getDefaultEnvManagerSetting()andgetDefaultPkgManagerSetting()dereference optional object properties without checking whether they exist:Explicitly adding both manager properties avoids the exception, but duplicates defaults that the setting schema already defines and should not be required.
Logs
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.