Mam problem z tym, że Jupyter nie widzi zmiennej env w pliku bashrc, czy istnieje sposób, aby załadować te zmienne w jupyter lub dodać do niego zmienną custome?
Mam problem z tym, że Jupyter nie widzi zmiennej env w pliku bashrc, czy istnieje sposób, aby załadować te zmienne w jupyter lub dodać do niego zmienną custome?
Odpowiedzi:
Aby ustawić zmienną env w notatniku jupyter, po prostu użyj %magicznych poleceń, albo %envlub %set_env, na przykład, %env MY_VAR=MY_VALUEalbo %env MY_VAR MY_VALUE. (Użyj %envsamodzielnie, aby wydrukować aktualne zmienne środowiskowe.)
Zobacz: http://ipython.readthedocs.io/en/stable/interactive/magics.html
os.environ[var] = valna zapleczu: github.com/ipython/ipython/blob/master/IPython/core/magics/ ...
kernel.jsonpliku:Moje rozwiązanie jest przydatne, jeśli potrzebujesz tych samych zmiennych środowiskowych za każdym razem, gdy uruchamiasz jądro jupyter, zwłaszcza jeśli masz wiele zestawów zmiennych środowiskowych do różnych zadań.
Aby utworzyć nowe jądro ipython ze zmiennymi środowiskowymi, wykonaj następujące czynności:
jupyter kernelspec listaby zobaczyć listę z zainstalowanymi jądrami i miejscem przechowywania plików.python2) do nowego katalogu (np python2_myENV.).display_namew nowym kernel.jsonpliku.envsłownik definiujący zmienne środowiskowe.Twój json jądra mógłby wyglądać tak (nie modyfikowałem niczego z zainstalowanego kernel.json z wyjątkiem display_namei env):
{
"display_name": "Python 2 with environment",
"language": "python",
"argv": [
"/usr/bin/python2",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"env": {"LD_LIBRARY_PATH":""}
}
LD_LIBRARY_PATHktóra wpływa na sposób ładowania skompilowanych modułów (np. Napisanych w C). Ustawienie tej zmiennej za pomocą %set_envnie działa.C:\Program Files (x86)\Graphviz2.38\bin\dot.exedo istniejącej ścieżki systemowej za pomocą sugerowanej techniki? Czy to zadziała, jeśli nie używam konta administratora? Używam systemu Windows 10.
sys.executablechyba że PYTHONEXECUTABLEjest ustawiony wcześniej, co musisz ustawić przed uruchomieniem Pythona.
Jeśli używasz Pythona, możesz zdefiniować zmienne środowiskowe w .envpliku i załadować je z notatnika Jupyter za pomocą python-dotenv .
Zainstaluj python-dotenv:
pip install python-dotenv
Załaduj .envplik do notatnika Jupyter:
%load_ext dotenv
%dotenv
Możesz ustawić zmienne środowiskowe w swoim kodzie w następujący sposób:
import sys,os,os.path
sys.path.append(os.path.expanduser('~/code/eol_hsrl_python'))
os.environ['HSRL_INSTRUMENT']='gvhsrl'
os.environ['HSRL_CONFIG']=os.path.expanduser('~/hsrl_config')
Jeśli oczywiście jest to tymczasowa poprawka, aby uzyskać stałą, prawdopodobnie będziesz musiał wyeksportować zmienne do swojego ~.profile, więcej informacji można znaleźć tutaj
%env MY_VAR=MY_VALUEpowinna być poprawną odpowiedzią na to pytanie
Jeśli potrzebujesz zmiennej zestaw zanim zaczynasz notebooka, jedynym rozwiązaniem, które pracował dla mnie było env VARIABLE=$VARIABLE jupyter notebookz export VARIABLE=valuew .bashrc.
W moim przypadku tensorflow potrzebuje wyeksportowanej zmiennej do pomyślnego zaimportowania jej do notatnika.
Problem, na który natknąłem się: Poniższe dwa polecenia są równoważne. Zauważ, że pierwszy nie może używać cudzysłowów. Nieco sprzecznie z intuicją, cytowanie łańcucha podczas używania %env VAR ...spowoduje, że cudzysłowy zostaną uwzględnione jako część wartości zmiennej, co prawdopodobnie nie jest tym, czego chcesz.
%env MYPATH=C:/Folder Name/file.txt
i
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"
Jeśli używasz systemd właśnie dowiedziałem się, że musisz dodać je do pliku jednostki systemd. To na Ubuntu 16. Umieszczenie ich w plikach .profile i .bashrc (nawet w / etc / profile) spowodowało, że zmienne ENV nie były dostępne w notebookach juypter.
Musiałem edytować:
/lib/systemd/system/jupyer-notebook.service
i wstawiłem zmienną, którą chciałem przeczytać w pliku jednostkowym, na przykład:
Environment=MYOWN_VAR=theVar
i dopiero wtedy mogłem go przeczytać z zeszytu Juypter.
Powiązane (krótkoterminowe) rozwiązanie polega na przechowywaniu zmiennych środowiskowych w jednym pliku w przewidywalnym formacie, który można pobrać podczas uruchamiania terminala i / lub wczytywania do notatnika. Na przykład mam plik, .envktóry ma moje definicje zmiennych środowiskowych w formacie VARIABLE_NAME=VARIABLE_VALUE(bez pustych wierszy lub dodatkowych spacji). Możesz pobrać ten plik w plikach .bashrclub .bash_profilepodczas rozpoczynania nowej sesji terminala i możesz wczytać go do notatnika za pomocą czegoś takiego jak:
import os
env_vars = !cat ../script/.env
for var in env_vars:
key, value = var.split('=')
os.environ[key] = value
Użyłem ścieżki względnej, aby pokazać, że ten .envplik może znajdować się w dowolnym miejscu i być powiązany z katalogiem zawierającym plik notatnika. Ma to również tę zaletę, że nigdzie nie wyświetla wartości zmiennych w kodzie.