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?
python
bash
environment-variables
jupyter-notebook
Ehab AlBadawy
źródło
źródło
os.environ[var] = val
na zapleczu: github.com/ipython/ipython/blob/master/IPython/core/magics/ ...Możesz także ustawić zmienne w swoim
kernel.json
pliku: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 list
aby zobaczyć listę z zainstalowanymi jądrami i miejscem przechowywania plików.python2
) do nowego katalogu (nppython2_myENV
.).display_name
w nowymkernel.json
pliku.env
sł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_name
ienv
):{ "display_name": "Python 2 with environment", "language": "python", "argv": [ "/usr/bin/python2", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": {"LD_LIBRARY_PATH":""} }
Zastosuj przypadki i zalety tego podejścia
LD_LIBRARY_PATH
która wpływa na sposób ładowania skompilowanych modułów (np. Napisanych w C). Ustawienie tej zmiennej za pomocą%set_env
nie działa.źródło
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
do 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.executable
chyba żePYTHONEXECUTABLE
jest ustawiony wcześniej, co musisz ustawić przed uruchomieniem Pythona.Jeśli używasz Pythona, możesz zdefiniować zmienne środowiskowe w
.env
pliku i załadować je z notatnika Jupyter za pomocą python-dotenv .Zainstaluj python-dotenv:
Załaduj
.env
plik do notatnika Jupyter:źródło
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źródło
%env MY_VAR=MY_VALUE
powinna być poprawną odpowiedzią na to pytanieJeśli potrzebujesz zmiennej zestaw zanim zaczynasz notebooka, jedynym rozwiązaniem, które pracował dla mnie było
env VARIABLE=$VARIABLE jupyter notebook
zexport VARIABLE=value
w.bashrc
.W moim przypadku tensorflow potrzebuje wyeksportowanej zmiennej do pomyślnego zaimportowania jej do notatnika.
źródło
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"
źródło
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.
źródło
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,
.env
który ma moje definicje zmiennych środowiskowych w formacieVARIABLE_NAME=VARIABLE_VALUE
(bez pustych wierszy lub dodatkowych spacji). Możesz pobrać ten plik w plikach.bashrc
lub.bash_profile
podczas 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
.env
plik 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.źródło