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://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables