Jupyter-Notebook-Kernelfehler aufgrund nicht gefundener Datei /run/user/*/jupyter

Jupyter-Notebook-Kernelfehler aufgrund nicht gefundener Datei /run/user/*/jupyter

Ich betreibe einen Jupyter 4.4.0 Notebook-Dienst (jupyter notebook --no-browser --port 8889) auf einem Fedora 27-Server, auf den ich remote über einen Browser zugreife. Nachdem ich den Dienst einige Stunden ohne Probleme genutzt habe, erhalte ich einen „Kernelfehler“. Innerhalb der ersten paar Stunden kann ich neue Notebooks ohne Fehler starten. Nach einer gewissen Zeit erhalte ich jedoch die unten angegebene Fehlermeldung. Sie sagt mir eindeutig, dass der Kernelfehler auf die fehlende Datei „/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json“ zurückzuführen ist.

Bei weiterer Untersuchung fiel mir auf, dass die Datei fehlt, weil das gesamte Jupyter-Verzeichnis in /run/user/1001 fehlt. Das Jupyter-Verzeichnis scheint beim ersten Start des Dienstes erstellt und nach einiger Zeit automatisch gelöscht zu werden.

Tagelange Suche hat ergeben, dass das Problem wahrscheinlich auf Inaktivität zurückzuführen ist, die dazu führt, dass entweder das Betriebssystem oder der Jupyter-Dienst das Verzeichnis /run/user/1001/jupyter löscht.

Bisher konnte ich nicht genau herausfinden, was das Verzeichnis /run/user/1001/jupyter löscht oder wie ich das verhindern kann. Wissen Sie, wie das Problem gelöst werden könnte?

Fehlermeldung

Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/web.py", line 1469, in _execute
    result = yield result
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
    yielded = self.gen.throw(*exc_info)
  File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/handlers.py", line 73, in post
    type=mtype))
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
    yielded = self.gen.throw(*exc_info)
  File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 79, in create_session
    kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
    yielded = self.gen.throw(*exc_info)
  File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 92, in start_kernel_for_session
    self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
  File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 285, in wrapper
    yielded = next(result)
  File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/kernels/kernelmanager.py", line 160, in start_kernel
    super(MappingKernelManager, self).start_kernel(**kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/multikernelmanager.py", line 110, in start_kernel
    km.start_kernel(**kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/manager.py", line 240, in start_kernel
    self.write_connection_file()
  File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 472, in write_connection_file
    kernel_name=self.kernel_name
  File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 137, in write_connection_file
    with open(fname, 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json'

Danke

Antwort1

Ich behebe dieses Problem, indem ich die Variable JUPYTER_RUNTIME_DIR einstelle. Jupyter speichert Laufzeitdateien standardmäßig in $XDG_RUNTIME_DIR/jupyter. Das Einstellen von JUPYTER_RUNTIME_DIR überschreibt dieses Verhalten. Sie können es auf ein Verzeichnis einstellen, das nicht automatisch bereinigt wird, um diesen Fehler zu vermeiden.

Folgendes mache ich, bevor Sie Jupyter starten:

export JUPYTER_RUNTIME_DIR="path_to_my_home_directory/.jupyter_runtime"

Und das Problem ist gelöst!

Einige weitere Details, die ich gefunden habe:

https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html#envvar-JUPYTER_RUNTIME_DIR

https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables

verwandte Informationen