Es gibt noch keinen echten Weg, das in Jupyterlab zu tun. Aber es gibt einen offiziellen Weg, der jetzt unter aktiver Diskussion/Entwicklung steht, Stand August 2021:
https://github.com/jupyter/jupyter_client/pull/656
In der Zwischenzeit scheint es am besten zu sein, auf den api/sessions
REST-Endpunkt von jupyter_server
zuzugreifen. Hier ist eine bereinigte Version dieses Ansatzes:
from jupyter_server import serverapp
from jupyter_server.utils import url_path_join
from pathlib import Path
import re
import requests
kernelIdRegex = re.compile(r"(?<=kernel-)[\w\d\-]+(?=\.json)")
def getNotebookPath():
kernelId = kernelIdRegex.search(get_ipython().config["IPKernelApp"]["connection_file"])[0]
for jupServ in serverapp.list_running_servers():
for session in requests.get(url_path_join(jupServ["url"], "api/sessions"), params={"token": jupServ["token"]}).json():
if kernelId == session["kernel"]["id"]:
return Path(jupServ["root_dir"]) / session["notebook"]['path']
Getestet und funktioniert mit
python==3.9
jupyter_server==1.8.0
jupyterlab==4.0.0a7
0 Stimmen
Was versuchst du damit zu tun? Designmäßig weiß der Kernel (der Teil, der Code ausführt) nichts über das Frontend (der Teil, der Notebooks öffnet).
7 Stimmen
Hallo, ich möchte es mit nbconvert verwenden, um den Prozess der automatischen Umwandlung des Notebooks in Latex/PDF zu automatisieren. Meine Notebooks werden remote ausgeführt. Nach einer Klasse können die Schüler eine PDF-Version ihrer Ergebnisse herunterladen.
1 Stimmen
P.Toccaceli's Antwort funktioniert gut mit den neuesten Versionen von JupyterLab (1.1.4) (Notebook 5.6.0) und erfordert kein Javascript.
2 Stimmen
Verwandt: github.com/jupyter/notebook/issues/1000#issuecomment-359875246
7 Stimmen
Einige haben die Arbeit gemacht und ein Pip-Paket erstellt: pypi.org/project/ipynbname installieren mit
pip install ipynbname
2 Stimmen
Ja,
ipynbname
funktioniert jetzt mit jupyter 3 (weitere Details hier)0 Stimmen
ipynbname
hat nicht auf Jupyter 4 funktioniert.