Установлен Jupyter Notebook для Python 3.6.8, зависает на “Запуск ядра, подождите…”

Вопрос или проблема

Я установил 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, предоставив детальное описание проблемы и шаги, которые вы уже предприняли. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...