03
Диагностика научных зависимостей: отделяем пакет от JupyterLab
После создания среды не устанавливайте сразу весь архив зависимостей лаборатории. Разделите проблемы на три класса:
- чистые Python-пакеты, которые обычно проверяются импортом и версией;
- научные пакеты с нативными библиотеками, бинарными колёсами или компиляцией;
- внешние командные инструменты, вызываемые из Notebook через оболочку.
Если чистый Python-пакет импортируется, а NumPy или библиотека визуализации нет, это ещё не означает, что JupyterLab 4.6 несовместим с Apple Silicon. Следует проверить доступность arm64-сборки, выбранный канал, версию Python, системные библиотеки и наличие компилятора. Homebrew может предоставить внешнюю утилиту, но факт её установки не гарантирует, что Python-пакет найдёт правильный заголовочный файл или библиотеку.
| Наблюдение |
Вероятная область причины |
Низкорисковое действие |
Условие остановки |
| Импорт базового пакета проходит, доменный пакет не собирается |
Нативная зависимость, компилятор или отсутствие arm64-сборки |
Проверить инструкцию проекта и пакетный канал в чистой среде |
Нет поддерживаемой arm64-сборки и нет подтверждённого обходного пути |
| Импорт проходит, но результат отличается |
Версия библиотеки, настройки BLAS, входные данные или архитектурная ветка |
Зафиксировать версии и сравнить небольшой контрольный результат |
Расхождение сохраняется после повторного запуска на обезличенных данных |
| Команда из Notebook не находится |
Внешний инструмент не установлен или отсутствует в PATH |
Проверить путь отдельной командой и описать его в инструкции проекта |
Инструмент требует недоступной системной функции или прав |
| Пакет установлен, но ядро его не видит |
Пакет установлен в другой Python |
Сверить sys.executable с путём активной среды и kernelspec |
Запись ядра продолжает ссылаться на старую среду |
| Установка меняет множество несвязанных пакетов |
Слишком широкий апдейт или смешение каналов |
Вернуться к чистой среде и ставить минимальный набор |
Менеджер не может построить согласованный граф зависимостей |
Сначала установите только JupyterLab и минимальный набор пакетов, который нужен контрольному Notebook. Затем добавляйте одну группу зависимостей за раз, фиксируя результат импорта. Если после добавления конкретного пакета меняются десятки несвязанных компонентов, сохраните журнал решателя и не продолжайте расширение среды до понимания причины.
Для conda-проектов файл окружения должен описывать зависимости, а не личную структуру диска. Документация conda по управлению окружениями объясняет создание и работу с изолированными средами, а описание команды conda export помогает подготовить переносимое представление. Перед передачей коллегам удалите секреты, токены, локальные абсолютные пути и пакеты, не относящиеся к проекту.