Po zainstalowaniu JupyterHub/JupyterLab przez pyenv, logiczną konsekwencją jest udostępnienie dedykowanych dla wyróżnionych celów, izolowanych środowisk, z różnymi zestawami zainstalowanych pakietów.
Do ujawnienia przeszukiwanych ścieżek służy jupyter --paths:
config:
/home/USER/.jupyter
/home/USER/.pyenv/versions/3.X.X/envs/name/etc/jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/home/USER/.local/share/jupyter
/home/USER/.pyenv/versions/3.8.2/envs/name/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/home/USER/.local/share/jupyter/runtime
Domyślnie narzędzia tworzą kernele w:
/home/USER/.local/share/jupyter/kernels/
jednak JupyterHub zainstalowany przez USER-a w pyenv i uruchomiony przez ROOT-a przez systemd śledzić będzie tylko lokalizację:
/home/USER/.pyenv/versions/3.X.X/envs/name/share/jupyter/kernels
Z tego powodu dla dodania nowego środowiska Pythona należy:
stworzyć odpowiednie środowisko:
pyenv virtualenv 3.X.X NAME
zalogować się do niego, zainstalować pakiet dla kernela ipykernel i sprawdzić ścieżkę uruchamiania:
pyenv activate NAME
pip install ipykernel
pyenv which python
co wskaże na ścieżkę:
/home/USER/.pyenv/versions/NAME/bin/python
w lokalizacji /home/USER/.local/share/jupyter/kernels/ należy przygotować katalog NAME z plikiem kernel.json:
{
"argv": [ "/home/USER/.pyenv/versions/NAME/bin/python", "-m", "ipykernel",
"-f", "{connection_file}"],
"display_name": "NAME",
"language": "python"
}
i zlinkować ten katalog do ścieżki:
/home/USER/.pyenv/versions/3.X.X/envs/name/share/jupyter/kernels
Od tej pory w JupyterLab powinno być dostępne dodatkowe środowisko NAME do uruchamiania notebooków.
Na końcu trzeba sprawdzić uprawnienia dostępu do dodanych katalogów konfiguracyjnych i środowisk Pythona.