microsoft / microsoft/vscode-python-environments
Path-only pythonProjects entries crash manager initialization
@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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Đánh giá
Issue này chưa được đánh giá.