Инженерные заметки HireVM

Что делать, если JupyterLab 4.6 не находит ядро Python?

Что делать, если JupyterLab 4.6 не находит ядро Python?

В официальном журнале изменений стабильной документации JupyterLab для ветки 4.6 указана версия 4.6.5 (журнал изменений JupyterLab). Если JupyterLab 4.6 не находит ядро Python, сначала выясните, в какой среде запущена служба, затем установите ipykernel в нужную среду и зарегистрируйте её как ядро. Не переустанавливайте JupyterLab, пока не проверили эту связь; после регистрации проверьте интерпретатор и зависимости внутри Notebook.

Эта инструкция для студентов и сотрудников лабораторий, у которых список ядер пуст или не содержит среды проекта.
Она также пригодится после смены виртуальной среды, Conda-окружения или версии Python.
Технические специалисты, поддерживающие Mac для лаборатории, найдут здесь порядок диагностики и критерии приёмки.

Что именно означает отсутствие ядра в JupyterLab 4.6

JupyterLab, сервер Jupyter и ядро Notebook связаны, но это не один и тот же компонент. Интерфейс может открываться и показывать файлы, даже если нужная среда Python не зарегистрирована как ядро. Документация JupyterLab описывает выбор ядра для документа отдельно от самого интерфейса (работа с документами и ядрами).

Полезно различать несколько состояний:

До исправления запишите способ запуска JupyterLab, путь к каталогу проекта, имя нужной среды и точный результат в списке ядер. Если сервер запущен из терминала, проверьте именно тот терминал и пользователя, а не другое окно, в котором доступен Python. При запуске через службу или графический ярлык контекст может отличаться от интерактивной оболочки.

Важно. Команда python в терминале показывает, что доступен некоторый Python. Она не доказывает, что JupyterLab обнаружил его или что Notebook использует именно его.

Диагностика по признакам: нет ни одного ядра или пропала одна среда

Начните с определения масштаба проблемы. Если JupyterLab показывает другие ядра, а не отображает только одну среду, сам интерфейс и механизм обнаружения уже работают хотя бы частично. Тогда ищите проблему в регистрации конкретного окружения. Если список пуст или ни одно ядро не запускается, проверьте среду службы и конфигурацию запуска.

Откройте терминал в том же контексте, откуда обычно запускается JupyterLab, и выполните:

jupyter lab --version
jupyter kernelspec list

Первая команда показывает версию доступного запускаемого JupyterLab. Вторая выводит известные Jupyter спецификации ядер и их расположение. Управление ядрами и kernelspec описано в документации Jupyter Client (список и устройство ядер). Если команда jupyter не находится, это ещё не говорит, что Python отсутствует: возможно, оболочка использует другой путь или JupyterLab стартует через отдельную службу.

Затем сопоставьте результат с тем, как запускается сервер. Конфигурация Jupyter Server определяет параметры службы и её рабочую среду (документация по конфигурации Jupyter Server). Если команда показывает ядро, но меню его не обновило, перезагрузите страницу или перезапустите службу после проверки. Если не показывает, продолжайте диагностику в целевой среде.

Сравнение вариантов диагностики и исправления

Наблюдение Вероятный уровень проблемы Что проверить или сделать Когда переходить дальше
Список ядер пуст Служба, доступные kernelspec или установка ядра Запустить jupyter kernelspec list из контекста службы; проверить конфигурацию запуска Если ожидаемая среда отсутствует, установите в неё ipykernel и зарегистрируйте ядро
Не видно только среды проекта Установка или регистрация целевого окружения Проверить путь к Python проекта и наличие в нём ipykernel После регистрации проверить список kernelspec ещё раз
Ядро есть, но импорты не работают Выбранный интерпретатор или состав зависимостей В Notebook вывести sys.executable, проверить нужные пакеты Устанавливать зависимости только в подтверждённый интерпретатор проекта
Ядро появляется, но сразу завершается Путь в kernelspec, состояние среды или запуск службы Проверить путь к Python и выполнить минимальную ячейку Если ошибка повторяется, сохранить вывод и отдельно проверить доступность файлов и среды

Таблица помогает выбрать следующий диагностический шаг, но не заменяет проверку конкретного запуска. Один и тот же симптом может иметь разные причины: например, отсутствующее ядро проекта исправляется регистрацией, а не переустановкой интерфейса.

Целевая среда не появляется: проверьте ipykernel и регистрацию

Наличие установленного ipykernel недостаточно, если он относится не к тому Python. Например, команда pip install ipykernel, выполненная без проверки, может установить пакет в интерпретатор, отличный от проектного. Поэтому сначала найдите исполняемый файл среды. Для виртуальной среды Python укажите явный путь к её Python; устройство таких сред описано в официальной документации Python (модуль venv).

Дальше используйте этот интерпретатор и для установки, и для регистрации. В примере замените путь на фактический путь к среде проекта:

/path/to/project-env/bin/python -m pip install ipykernel
/path/to/project-env/bin/python -m ipykernel install --user --name project-env --display-name "Python (project-env)"

Официальная инструкция IPython показывает, как установить ядро из отдельного Python-окружения и задать ему имя (установка IPython kernelspec). Параметр --name задаёт внутреннее имя спецификации, а --display-name — подпись в списке JupyterLab. Подпись можно сделать понятной для исследовательской группы, но она не доказывает, какой файл Python будет запущен. Доказательство — путь в kernelspec и проверка из самого Notebook.

После регистрации снова выполните jupyter kernelspec list в среде службы. Если новый kernelspec не отображается, проверьте, под каким пользователем запускается JupyterLab и где этот пользователь ищет спецификации. Не удаляйте другие ядра наугад: сначала сохраните их имена и пути, особенно если ими пользуются коллеги.

При смене окружения безопаснее зарегистрировать новое ядро с отдельным именем, чем заменять старое. Тогда старые Notebook и рабочие процессы останутся доступны, а новую среду можно будет проверить отдельно. Удалять старую регистрацию стоит только после подтверждения, что она больше не нужна и ни один проект на неё не ссылается.

Частые вопросы

JupyterLab открывается, но в списке нет Python

Сначала выполните jupyter kernelspec list из того же контекста, откуда запущен сервер. Если список пуст, проверьте установку ядра и конфигурацию службы. Если видны другие ядра, но не нужная среда, зарегистрируйте Python проекта через ipykernel. Перезапускать или переустанавливать JupyterLab имеет смысл только после проверки этой связи.

ipykernel установлен в виртуальной среде, но JupyterLab её не показывает

Проверьте, к какому Python относится pip: используйте целевой интерпретатор в форме python -m pip, а не непроверенную команду pip. Затем из того же Python зарегистрируйте ядро отдельным kernelspec. Важно проверить результат со стороны запущенной службы: терминальная команда в другом окружении может видеть иной набор ядер.

Как проверить, какой Python выполняет Notebook

В ячейке выполните import sys и выведите sys.executable. Сравните путь с ожидаемым Python среды проекта. Название ядра в меню может быть произвольным, поэтому ориентироваться только на него нельзя. Затем проверьте версии ключевых библиотек и выполните короткий импорт используемых в проекте модулей.

Как подключить старый Notebook к новой среде

Установите ipykernel в новую среду и зарегистрируйте её, не меняя старый файл вручную. Откройте Notebook, выберите новое ядро и выполните проверку sys.executable, затем проверьте импорты проекта. Если всё совпадает, сохраните Notebook. Для воспроизводимости отдельно запишите способ создания среды и список критичных зависимостей.

Ядро видно, но код использует не тот Python

После выбора ядра выполните в Notebook короткую диагностическую ячейку:

import os
import sys

print(sys.executable)
print(sys.version)
print(os.getcwd())

sys.executable показывает путь к интерпретатору текущего процесса. sys.version помогает подтвердить версию Python, а os.getcwd() — рабочий каталог, из которого код ищет относительные файлы. Эти проверки отвечают на разные вопросы: выбран ли нужный Python и откуда запускаются операции с файлами.

Затем проверьте не только наличие пакетов, но и то, что проверка проходит именно в выбранном ядре:

from importlib.metadata import version

print(version("ИМЯ_ПАКЕТА"))

Подставьте имя ключевой зависимости проекта. Если библиотека не находится, не устанавливайте её автоматически в «глобальный» Python. Сначала сверьте sys.executable, затем установите пакет способом, принятым для этого проекта, в подтверждённую среду. Это уменьшает риск изменить окружение другого Notebook или нарушить зафиксированные версии.

Рабочий каталог тоже важен для научного анализа. Notebook может открыться из другой папки и не найти данные или локальные модули, хотя ядро корректно. Проверьте, откуда запускается сервер и какой каталог выбран для проекта. Не переносите чувствительные исследовательские данные в стороннюю среду ради проверки; для диагностики обычно достаточно кода без реальных данных и безопасных тестовых файлов.

Регистрация выполнена, но ядро не стартует или отключается

Если ядро появляется в меню, но сразу завершается, сначала проверьте путь, указанный в kernelspec. Среду могли переместить, переименовать или удалить; в этом случае регистрация останется в списке, но запуск будет указывать на недоступный Python. Посмотрите путь к спецификации из вывода jupyter kernelspec list, затем откройте соответствующий файл и проверьте его команду запуска. Не редактируйте его до сохранения исходной копии.

Второй источник путаницы — разные машины или контексты запуска. Терминал на локальном Mac, удалённый сервер и ядро могут не разделять файловую систему. Проверяйте путь на том хосте, где реально выполняется Jupyter Server и запускается Python-процесс. Если Notebook открыт через удалённую службу, наличие среды в локальном терминале не подтверждает её доступность на сервере.

Для сужения причины запустите минимальный фрагмент без чтения данных и импорта тяжёлых библиотек. Если пустая ячейка завершается, зафиксируйте сообщение сервера и проверьте kernelspec и доступность указанного Python. Если минимальный код работает, а сбой появляется при импорте или загрузке проекта, проверяйте соответствующую зависимость, рабочий каталог и доступ к файлам отдельно. Не следует называть такой случай общей неисправностью JupyterLab 4.6 без подтверждённых данных.

Практическое правило. Меняйте за один раз только один элемент: регистрацию ядра, выбранный интерпретатор или зависимость. Иначе будет трудно понять, какое действие устранило сбой и можно ли повторить результат на другой машине.

Порядок проверки перед возвращением к исследовательской работе

Используйте этот контрольный список после исправления:

Сохраните также команды запуска и регистрации, но не секреты доступа, токены или персональные данные. Если работу должна повторять лаборатория, зафиксируйте точный путь к среде и процедуру её создания. Название ядра само по себе для воспроизведения недостаточно: другой пользователь может зарегистрировать такое же отображаемое имя для другого Python.

JupyterLab 4.6.5 указан в официальном журнале изменений для ветки 4.6; перед публикацией инструкции по конкретной установке сверяйте текущую документацию и доступные команды. Сам принцип диагностики остаётся раздельным: служба обнаруживает kernelspec, kernelspec запускает Python, а Notebook выполняет код в выбранном ядре. Подтверждать нужно каждую из этих частей.

Если проекту действительно требуется проверка именно на macOS, а у лаборатории нет доступного Mac, удалённый Mac может дополнить Linux- и Windows-среды. Он не заменяет диагностику kernelspec и не гарантирует совместимость конкретного проекта. До передачи кода и данных проверьте требования к конфиденциальности, нужный способ доступа и то, допускает ли проект удалённое выполнение. Сначала можно изучить руководства по удалённой работе с Mac, примеры сценариев и сравнение вариантов доступа к Mac. При оценке аренды Mac учитывайте условия предоставления доступа и соответствие среды требованиям проекта; выбор следует делать после проверки конфиденциальности и способа подключения.

Часто задаваемые вопросы

JupyterLab открывается, но в списке нет Python — что проверить?

Сначала проверьте, какие ядра видит именно запущенный сервер: выполните `jupyter kernelspec list` в том же контексте, откуда стартует JupyterLab. Если список пуст, проверьте установленное ядро и конфигурацию службы. Если в списке есть другие ядра, но нет нужного проекта, зарегистрируйте его Python отдельно через ipykernel.

ipykernel установлен в виртуальной среде, но JupyterLab её не показывает. Почему?

Частая причина — пакет установлен не в том интерпретаторе: команда `pip` могла относиться к Python, отличному от Python проекта. Сверьте путь к исполняемому файлу и установите ipykernel командой `python -m pip` через интерпретатор целевой среды. Затем зарегистрируйте это окружение как отдельное ядро и обновите список в JupyterLab.

Как узнать, какой Python действительно выполняет код Notebook?

Выполните в ячейке `import sys; print(sys.executable)` и сравните полученный путь с интерпретатором проекта. Название ядра в меню можно задать произвольно, поэтому оно само по себе не подтверждает источник Python. Заодно проверьте версию интерпретатора и наличие ключевых библиотек непосредственно из этой ячейки.

Как подключить старый Notebook к новой среде Python?

Установите ipykernel в новую среду, зарегистрируйте её отдельным kernelspec и откройте старый Notebook, не меняя его файл вручную. В интерфейсе выберите новое ядро, затем проверьте `sys.executable` и импорты проекта. Сохраните Notebook после успешной проверки, чтобы его метаданные зафиксировали выбранное ядро.

Выделенные физические узлы Apple Silicon

Настройте среду для JupyterLab на удалённом Mac

Арендуйте выделенный физический Mac с Apple Silicon и подготовьте отдельную среду Python для JupyterLab и ipykernel.

Выбрать конфигурацию и оформить заказ