microsoft / microsoft/vscode-python-environments

Path-only pythonProjects entries crash manager initialization

Đang mở
#1,666 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

@eleanorjboyd đang làm issue này rồi.

Từ ngày 5/8/2026.

Ngôn ngữ chính
TypeScript
Star
138
Fork
62
Merge trung bình
1 ngày 4 giờ
Pull request đã merge (30 ngày)
35

Mô tả

## 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:

```json
{
"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:

```typescript
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

```text
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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.