[python] Jupyter 노트북에서 환경 변수를 설정하는 방법

Jupyter가 bashrc 파일에서 env 변수를 볼 수 없다는 문제가 있습니다. 이러한 변수를 jupyter에로드하거나 여기에 custome 변수를 추가하는 방법이 있습니까?



답변

jupyter 노트북에서 env 변수를 설정하려면 %매직 명령을 사용하십시오. %env또는 %set_env, 예, %env MY_VAR=MY_VALUE또는 %env MY_VAR MY_VALUE. ( %env현재 환경 변수를 인쇄하기 위해 단독으로 사용 합니다.)

참조 : http://ipython.readthedocs.io/en/stable/interactive/magics.html


답변

kernel.json파일 에서 변수를 설정할 수도 있습니다.

내 솔루션은 jupyter 커널을 시작할 때마다 동일한 환경 변수가 필요한 경우, 특히 다른 작업에 대한 여러 환경 변수 집합이있는 경우 유용합니다.

환경 변수를 사용하여 새 ipython 커널을 생성하려면 다음을 수행하십시오.

  • https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs 에서 설명서를 읽으십시오.
  • jupyter kernelspec list설치된 커널과 파일이 저장된 목록을 보려면 실행 하십시오.
  • kernel.json이 포함 된 디렉토리 (예 : named python2)를 새 디렉토리 (예 :)로 복사합니다 python2_myENV.
  • display_namekernel.json파일 에서 변경 하십시오.
  • env환경 변수를 정의 하는 사전을 추가하십시오 .

커널 json은 다음과 같을 수 있습니다 (및를 제외 display_name하고 설치된 kernel.json에서 아무것도 수정하지 않았습니다 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_PATH컴파일 된 모듈 (예 : C로 작성된)이로드되는 방식에 영향을주는 변수를 설정하고 싶었습니다 . 이 변수를 사용하여 설정하면 %set_env작동하지 않습니다.
  • 환경이 다른 여러 파이썬 커널을 가질 수 있습니다.
  • 환경을 변경하려면 커널을 전환 / 다시 시작하기 만하면되지만 jupyter 인스턴스를 다시 시작할 필요는 없습니다 (다른 노트북에서 변수를 풀지 않으려는 경우 유용합니다). -그러나-https://github.com/jupyter/notebook/issues/2647 참조


답변

Python을 사용하는 경우 .env파일에 환경 변수를 정의 하고 python-dotenv를 사용하여 Jupyter 노트북 내에서로드 할 수 있습니다 .

python-dotenv를 설치합니다.

pip install python-dotenv

.envJupyter 노트북에 파일을 로드합니다 .

%load_ext dotenv
%dotenv


답변

다음과 같이 코드에서 환경 변수를 설정할 수 있습니다.

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')

물론 임시 수정 인 경우 영구적 인 수정을 얻으려면 변수를으로 내 ~.profile보내야 할 수 있습니다. 자세한 정보는 여기 에서 찾을 수 있습니다.


답변

당신은 노트북을 시작되기 전에 당신이 변수 설정이 필요하면 나를 위해 일한 유일한 솔루션이었다 env VARIABLE=$VARIABLE jupyter notebookexport VARIABLE=value에서 .bashrc.

제 경우에는 tensorflow가 노트북에서 성공적으로 가져 오기 위해 내 보낸 변수가 필요합니다.


답변

내가 만난 문제 : 다음 두 명령은 동일합니다. 첫 번째 따옴표를 사용할 수 없습니다 . 다소 반 직관적으로 사용할 때 문자열을 인용하면 %env VAR ...따옴표가 변수 값의 일부로 포함되며 이는 아마도 원하는 것이 아닐 것입니다.

%env MYPATH=C:/Folder Name/file.txt

import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"


답변

systemd를 사용하는 경우 systemd 단위 파일에 추가해야하는 것 같습니다. 우분투 16에서. .profile 및 .bashrc (/ etc / profile 포함)에 넣으면 juypter 노트북에서 ENV Vars를 사용할 수 없습니다.

나는 편집해야했다 :

/lib/systemd/system/jupyer-notebook.service

다음과 같이 단위 파일에서 읽고 싶은 변수를 넣으십시오.

Environment=MYOWN_VAR=theVar

그래야 juypter 노트북에서 읽을 수있었습니다.