Вопрос или проблема
Я установил Jupyter Notebook на свой компьютер с системой RHEL, установил его с помощью команды pip3 install --user jupyter
, а затем, так как он не работал, выполнил pip3 install --force-reinstall --user jupyter
, поэтому теперь у меня файлы Jupyter хранятся в директории ~/.local/bin
. Я не администратор или суперпользователь для кластера, с которого я работаю, вот почему я установил его в ~/.local/bin
. Теперь, когда я запускаю Jupyter Notebook и открываю файл .ipynb, ядро остается в состоянии `Kernel Starting, please wait…` до тех пор, пока оно просто не завершится. Я пытался выяснить, влияет ли на это браузер, и теперь я пробовал это в Internet Explorer 11, Chrome и Edge, и все они делают то же самое. Я не знаю, что может мешать загрузке ядра.
ИЗМЕНЕНИЕ (02-ДЕКАБРЯ-2019): Кажется, есть возможное решение, описанное здесь, однако эти решения описывают, как откатить версию на системе Windows, в то время как я работаю на системе на базе Linux.
ИЗМЕНЕНИЕ (03-ДЕКАБРЯ-2019): После дальнейшего расследования я обнаружил, что сообщение “Kernel Starting, please wait…” на странице Jupyter соответствует выводу в терминал:
RuntimeError: Permissions assignment failed for secure file: ':/path/to/user/tmp/jupyter-kernel:/path/to/user/jupyter-kernel/kernel-66b8b6e5-5e4c-4b05-98e9-870a5b431088.json'. Got '0o1600' instead of '0o0600'
Эта проблема, похоже, обсуждается на странице проблем GitHub для Jupyter, и я пытался сделать то, что было предписано, а именно изменить $JUPYTER_RUNTIME_DIR
на новое местоположение, но это не сработало (я на самом деле пробовал два разных местоположения для директории), я убедился, что .json файлы ядра находятся в правильном месте и всё такое. Я по-прежнему получаю ту же ошибку. Система сообщает мне, что os.name равен POSIX, поэтому я не знаю, является ли это основной проблемой, так как ошибка связана с файлом под названием paths.py и, по-видимому, является проблемой в secure_write(), вот часть кода:
@contextmanager
def secure_write(fname, binary=False):
"""Открывает файл в самом ограниченном паттерне, доступном для
записи содержимого. Это ограничивает режим файла до `0o0600` и возвращает
открытый файловый дескриптор.
Параметры
----------
fname : unicode
Путь к файлу для записи
binary: boolean
Указывает, что файл является двоичным
"""
mode="wb" if binary else 'w'
open_flag = os.O_CREAT | os.O_WRONLY | os.O_TRUNC
try:
os.remove(fname)
except (IOError, OSError):
# Пропуск любых проблем с отсутствующим файлом
pass
if os.name == 'nt':
# Python на Windows не учитывает группы и публичные биты для chmod, поэтому нам нужно
# предпринять дополнительные шаги для защиты содержимого.
# Заранее создаем файл, чтобы избежать изменения разрешений в открытых файлах на Windows
fd = os.open(fname, os.O_CREAT | os.O_WRONLY | os.O_TRUNC, 0o0600)
os.close(fd)
open_flag = os.O_WRONLY | os.O_TRUNC
win32_restrict_file_to_user(fname)
with os.fdopen(os.open(fname, open_flag, 0o0600), mode) as f:
if os.name != 'nt':
# Убедитесь, что файл получил запрашиваемые разрешения перед записью
file_mode = get_file_mode(fname)
if 0o0600 != file_mode:
raise RuntimeError("Ошибка назначения разрешений для защищенного файла: '{file}'."
"Получено '{permissions}' вместо '0o0600'"
.format(file=fname, permissions=oct(file_mode)))
yield f
Одно из решений – в Jupyter core v4.6.2 вы теперь можете установить переменную окружения JUPYTER_ALLOW_INSECURE_WRITES
в 1
или true
, чтобы отключить эту проверку
Деталь: https://discourse.jupyter.org/t/jupyter-core-4-6-2-release-with-insure-mode-option/3300
Последняя рабочая версия была jupyter_client==5.3.1
, до того, как были внесены изменения в безопасность
Для меня проблема возникла из-за функции списка разрешенных приложений (split-tunnel) ExpressVPN, которая interfered with Jupyter. Я отключил функции split-tunnel и просто использовал расширение VPN для браузера. К вашему сведению, NordVPN имеет плохо работающую функцию split-tunnel, в то время как SurfShark, ExpressVPN и, вероятно, многие другие полностью проваливаются.
Ответ или решение
Решение проблемы "Kernel Starting, please wait…" в Jupyter Notebook на RHEL
Если вы столкнулись с ситуацией, когда Jupyter Notebook зависает на сообщении "Kernel Starting, please wait…", это может быть вызвано несколькими факторами. Давайте рассмотрим основные шаги для диагностики и устранения этой проблемы.
1. Проверка установок Jupyter Notebook
Вы упомянули, что установили Jupyter Notebook с использованием команды:
pip3 install --user jupyter
Проверьте, правильно ли установлены все необходимые зависимости. Иногда причиной могут быть конфликты с версиями, особенно если вы переустанавливали Jupyter. Запустите следующую команду, чтобы удостовериться в правильности установки:
pip3 show jupyter
Убедитесь, что все зависимости, включая jupyter-client и jupyter-core, находятся в актуальном состоянии. Вам может понадобиться обновить установленные пакеты:
pip3 install --upgrade jupyter jupyter-client jupyter-core
2. Проверка прав доступа
Согласно вашему описанию, ошибка Permissions assignment failed...
указывает на проблемы с правами доступа к временным файлам. Убедитесь, что у вас есть права на запись в директорию, указанную в JUPYTER_RUNTIME_DIR
. Вы можете проверить и установить необходимые права доступа следующими командами:
# Посмотреть текущие права доступа
ls -ld /path/to/user/tmp/jupyter-kernel
# Установить необходимые права доступа
chmod 700 /path/to/user/tmp/jupyter-kernel
Замените путь на актуальный для вашей системы. Если переменная окружения JUPYTER_RUNTIME_DIR
не установлена, попробуйте установить её в директорию, где у вас есть полный доступ:
export JUPYTER_RUNTIME_DIR=$HOME/.jupyter/runtime
mkdir -p $JUPYTER_RUNTIME_DIR
3. Настройка переменной окружения
Как вы упомянули, начиная с версии Jupyter Core 4.6.2 появилась возможность обойти проверку безопасности, установив переменную окружения JUPYTER_ALLOW_INSECURE_WRITES
. Вы можете попробовать использовать этот вариант в качестве временного решения:
export JUPYTER_ALLOW_INSECURE_WRITES=1
4. Проверка конфликта с VPN
Некоторые VPN-клиенты могут вызывать конфликты с Jupyter Notebook. Вы упомянули, что у вас установлен ExpressVPN. Попробуйте временно отключить VPN или настроить его так, чтобы он не блокировал соединение с Jupyter. Иногда использование расширений VPN для браузеров может обойти эту проблему.
5. Использование альтернативных браузеров
Убедитесь, что вы используете актуальные версии браузеров. Рекомендуется использовать Google Chrome или Firefox для работы с Jupyter Notebook. Попробуйте сбросить настройки браузера или использовать режим инкогнито, чтобы исключить влияние кэшированных данных и расширений.
Заключение
Эти шаги помогут вам диагностировать и, надеюсь, устранить проблему с зависанием ядра Jupyter Notebook. Если эти решения не сработают, рассмотрите возможность обращения за помощью в сообщество Jupyter, предоставив детальное описание проблемы и шаги, которые вы уже предприняли. Удачи!