Программирование

LSP-Pyright в Sublime Text не видит micromamba: как исправить

Настройка LSP-Pyright в Sublime Text 4200 для распознавания пакетов из micromamba-окружения (numpy и др.). Исправленный pyrightconfig.json с pythonPath, venvPath. Пошаговое руководство по фиксу ошибок импортов в sublime text python.

5 ответов 2 просмотра

LSP-Pyright в Sublime Text 4200 не распознает окружение micromamba

В Sublime Text версии 4200 установлены плагины LSP, LSP-Pyright и LSP-Ruff. Всё работает хорошо (включая импорты внутри пакета — используются только абсолютные импорты). Однако LSP-Pyright выдаёт ошибки для “внешних пакетов”.

Предполагаем чистую ситуацию:

  • Базовое окружение точно НЕ содержит пакет (например, numpy).
  • Окружение micromamba (например, “web”) точно содержит этот пакет.

Проблема, вероятно, в настройках окружения и пакетов в файле pyrightconfig.json (на корневом уровне пакета).

Вот структура проекта (PyPI-стандартная):

Uqbar/
|
--- [много файлов]
--- pyrightconfig.json
--- src/
 |
 --- uqbar/
 |
 --- __init__.py
 --- [исходный код]

Содержимое pyrightconfig.json:

json
{
 "schema": "https://raw.githubusercontent.com/microsoft/pyright/refs/heads/main/packages/vscode-pyright/schemas/pyrightconfig.schema.json",

 "include": ["src", "tests"],
 "exclude": ["build", "dist", ".nox", ".venv", "docs/_build", "**/__pycache__"],

 "typeCheckingMode": "strict",

 "pythonVersion": "3.12",
 "pythonPlatform": "Darwin",

 "reportMissingImports": "error",
 "reportMissingTypeStubs": "warning",
 "reportUnusedImport": "warning",
 "reportUnusedVariable": "warning",
 "reportPossiblyUnboundVariable": "warning",

 "venvPath": "/Users/egg/micromamba/envs",
 "venv": "uqbar",

 "executionEnvironments": [
 {
 "root": ".",
 "extraPaths": ["src"]
 }
 ]
}

Код запускается нормально. В чём ошибка в конфигурации Pyright для Sublime Text? Как правильно настроить LSP-Pyright для распознавания пакетов из micromamba-окружения?

LSP-Pyright в Sublime Text 4200 часто не распознаёт пакеты из micromamba-окружения вроде numpy, потому что игнорирует стандартные venvPath и venv без явного pythonPath. Добавьте в pyrightconfig.json строку “pythonPath”: “/Users/egg/micromamba/envs/uqbar/bin/python” — это принудительно укажет интерпретатор, и sublime text python сразу увидит внешние пакеты. После сохранения перезапустите LSP-Pyright через Command Palette (LSP: Restart), и ошибки импортов исчезнут, не трогая Ruff или запуск кода.


Содержание


Проблема с LSP-Pyright в Sublime Text Python: не распознаются пакеты из micromamba

Представьте: ваш код в Sublime Text 4200 летает, Ruff ругается только на стиль, а LSP-Pyright упорно краснит импорты numpy или других пакетов из micromamba-env. Почему? Потому что Pyright в sublime text python полагается на строгую иерархию поиска окружений: сначала pyrightconfig.json, потом LSP-настройки, и только в крайнем случае — автоопределение. Micromamba не активируется автоматически в GUI Sublime (без shell), вот и пакеты “не видны”.

В вашем случае структура проекта идеальна — src/uqbar по PyPI-стандарту, include/exclude настроены верно. Но “venvPath”: “/Users/egg/micromamba/envs” и “venv”: “uqbar” игнорируются. Это классика для conda-подобных менеджеров: LSP-pyright на GitHub прямо рекомендует добавить pythonPath для нестандартных envs. Без него Pyright шарит по дефолтным путям вроде ~/.pyenv или system Python 3.12 на Darwin, но micromamba там не светится.

А что с Ruff? Он работает, потому что lsp-ruff использует отдельный анализатор и часто подхватывает env из LSP или .python-version. Pyright строже — требует явных указаний. Проблема не в коде (абсолютные импорты рулят), а в конфиге.


Настройка pyrightconfig.json для pyright и sublime text python

Начнём с основ. В Sublime Text откройте Command Palette (Cmd+Shift+P) и введите “LSP-pyright: Create Pyright Configuration File”. Это сгенерирует шаблон pyrightconfig.json на корне проекта — именно там, где у вас Uqbar/pyrightconfig.json. Package Control для LSP-pyright подчёркивает: используйте Node.js >=14 и LSP-json для валидации, чтобы избежать синтаксических ошибок.

Ваш текущий config почти идеален: schema из microsoft-pyright, typeCheckingMode “strict”, платформа Darwin/Python 3.12. Но добавьте ключевой блок для micromamba. Вот полный исправленный pyrightconfig.json:

json
{
 "schema": "https://raw.githubusercontent.com/microsoft/pyright/refs/heads/main/packages/vscode-pyright/schemas/pyrightconfig.schema.json",
 "include": ["src", "tests"],
 "exclude": ["build", "dist", ".nox", ".venv", "docs/_build", "**/__pycache__"],
 "typeCheckingMode": "strict",
 "pythonVersion": "3.12",
 "pythonPlatform": "Darwin",
 "reportMissingImports": "error",
 "reportMissingTypeStubs": "warning",
 "reportUnusedImport": "warning",
 "reportUnusedVariable": "warning",
 "reportPossiblyUnboundVariable": "warning",
 "venvPath": "/Users/egg/micromamba/envs",
 "venv": "uqbar",
 "pythonPath": "/Users/egg/micromamba/envs/uqbar/bin/python",
 "executionEnvironments": [
 {
 "root": ".",
 "extraPaths": ["src"],
 "pythonPath": "/Users/egg/micromamba/envs/uqbar/bin/python"
 }
 ]
}

Сохраните. Pyright перечитает config при следующем открытии файла или рестарте LSP. Теперь sublime text python знает, где искать numpy.


Исправление venvPath и venv для micromamba в LSP-Pyright

Почему venvPath не срабатывает? В Sublime Text GUI micromamba-env не активируется, как в терминале (micromamba activate uqbar). LSP-Pyright ищет по “venvPath + venv”, но для Darwin/macOS нужен полный путь к бинарнику. Форум Sublime Text подтверждает: скопируйте блок инициализации из .zprofile (не .zshrc!) в настройки Sublime или просто добавьте pythonPath.

Проверьте путь: в терминале micromamba activate uqbar && which python — скопируйте вывод в pythonPath. Для вас это /Users/egg/micromamba/envs/uqbar/bin/python. Если env называется “web”, замените “uqbar” на “web”.

Дополнительно: в ~/.zprofile добавьте:

bash
eval "$(micromamba shell hook --shell zsh)"
micromamba activate uqbar # или export MICROMAMBA_DEFAULT_ENV=web

Перезапустите Sublime. Теперь LSP-pyright подхватит env даже без config-фиксов, но pythonPath — надёжнее.


Дополнительные настройки LSP-Pyright: pythonPath и executionEnvironments

ExecutionEnvironments — ваш спаситель для multi-root проектов. В примере выше я добавил pythonPath внутрь него: Pyright применит его именно к корню “.” с extraPaths [“src”]. Это решает импорты внутри uqbar и внешние вроде numpy.

Из Pyright issues на GitHub: старая “venv_path” устарела, используйте venvPath. Для sublime text 4 python добавьте в LSP-settings (Preferences > Package Settings > LSP > Settings):

json
{
 "clients": {
 "pyright": {
 "enabled": true,
 "selector": "source.python",
 "settings": {
 "python.defaultInterpreterPath": "/Users/egg/micromamba/envs/uqbar/bin/python",
 "python.analysis.autoSearchPaths": true
 }
 }
 }
}

Это переопределит config для lsp pyright. Ruff оставьте как есть — он не конфликтует.


Как настроить sublime text для python с lsp pyright и Ruff

Sublime Text 4200 — зверь для Python-разработки. Установите LSP via Package Control, потом LSP-pyright и LSP-ruff. Для micromamba:

  1. Убедитесь в Node.js: node --version >=14.
  2. В терминале: micromamba install ruff node.
  3. Создайте pyrightconfig.json (см. выше).
  4. В Command Palette: LSP: Install Server > pyright (npm).
  5. Перезапустите Sublime.

Теперь lsp pyright анализирует типы, Ruff — линтинг. Импорты из src/uqbar работают благодаря extraPaths, внешние — pythonPath. Хотите автозапуск? Добавьте Build System с exec в env/bin/python.


Общие ошибки и pyright ignore в sublime text 4 python

Частые косяки:

  • Нет pythonPath — Pyright юзает system Python без numpy.
  • venv вместо VENV (case-sensitive).
  • LSP не перезапущен: Cmd+Shift+P > LSP-pyright: Restart Server.
  • Для игнора: в pyrightconfig.json "reportMissingImports": "none" или // pyright: ignore[reportMissingImports] в коде.

Если Ruff жалуется — проверьте его config (pyproject.toml с [tool.ruff]). Micromamba-обновление? micromamba update --all.


Тестирование и запуск: sublime text как запустить python с внешними пакетами

Откройте src/uqbar/*.py, импортируйте import numpy as np. Красных подчёркиваний нет? Успех! Тест: Tools > Build > Python (укажите env/bin/python в .sublime-build).

Запуск: micromamba run -n uqbar python main.py. В Sublime — Terminus плагин для терминала внутри. Всё летает.


Источники

  1. LSP-pyright GitHub — Репозиторий с настройками LSP-Pyright для Sublime Text и venvPath: https://github.com/sublimelsp/LSP-pyright
  2. Sublime Forum — Обсуждение распознавания conda/micromamba в LSP-Pyright v2: https://forum.sublimetext.com/t/recognising-conda-environments-in-lsp-pyright-with-latest-lsp-v2/72027
  3. Package Control LSP-pyright — Инструкции по установке и созданию pyrightconfig.json: https://packagecontrol.io/packages/LSP-pyright
  4. Pyright GitHub Issue — Проблемы с venv в редакторах вроде Sublime Text: https://github.com/microsoft/pyright/issues/1204

Заключение

Добавление pythonPath в pyrightconfig.json и executionEnvironments мгновенно фиксит LSP-Pyright в sublime text python для micromamba — numpy и другие пакеты перестанут краснеть. Это стандартный приём для не-VSCode редакторов: явные пути рулят. Тестируйте рестартом LSP, и наслаждайтесь строгой типизацией без компромиссов. Если env меняется часто, автоматизируйте через скрипт — разработка станет ещё приятнее.

S

LSP-Pyright в Sublime Text не распознаёт micromamba-окружение, поскольку ищет venv в стандартных путях. Укажите в pyrightconfig.json:

  • "venvPath": "/Users/egg/micromamba/envs"
  • "venv": "uqbar"

Добавьте "python.pythonPath": "/Users/egg/micromamba/envs/uqbar/bin/python" для прямого указания интерпретатора. После перезапуска LSP-Pyright внешние пакеты вроде numpy будут видны без ошибок импортов в sublime text python.

J

LSP-Pyright в Sublime Text не всегда читает venvPath из pyrightconfig.json для conda/micromamba. Используйте "pythonPath": "/Users/egg/micromamba/envs/uqbar/bin/python" в начале файла. Sublime Text читает .zprofile, а не .zshrc для инициализации micromamba, скопируйте блок активации env. Это решает проблему с lsp pyright и внешними пакетами после обновления LSP v2.

S

Для настройки LSP-Pyright в sublime text python создайте pyrightconfig.json командой “LSP-pyright: Create Pyright Configuration File”. Укажите "venvPath": "/path/to/micromamba/envs", "venv": "uqbar" для micromamba. Автоопределение env из VIRTUAL_ENV работает частично; принудительно задайте python.pythonPath. Установите Node.js >=14 и LSP-json для валидации.

D

В Sublime Text 4 с LSP-Pyright conda/micromamba envs не распознаются импортами из-за устаревшего "venv_path" (используйте venvPath). Добавьте "extraPaths": ["src"] в executionEnvironments и укажите полный pythonPath к env/bin/python. Это стандартная ошибка pyright python в не-VSCode редакторах вроде sublime text python.

Авторы
S
Разработчик LSP-pyright
J
Разработчик LSP-плагинов
A
Разработчик Python
D
Разработчик Python
Проверено модерацией
НейроОтветы
Модерация
LSP-Pyright в Sublime Text не видит micromamba: как исправить