본문 바로가기

개발하자

Jupyter 노트북에서 env 변수를 설정하는 방법

반응형

Jupyter 노트북에서 env 변수를 설정하는 방법

나는 주피터가 bashrc 파일에서 env 변수를 볼 수 없다는 문제가 있다. 이러한 변수를 주피터에 로드하거나 사용자 지정 변수를 추가할 수 있는 방법이 있습니까?




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

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

물론 영구적인 수정을 얻으려면 변수를 에 내보내야 하는 임시 수정인 경우 더 많은 정보를 찾을 수 있습니다




만약 당신이 systemd를 사용하고 있다면, 나는 당신이 그것들을 systemd 유닛 파일에 추가해야 할 것 같다는 것을 방금 알았다. Ubuntu 16에 있습니다. .profile 및 .bashrc(또는 /etc/profile)에 입력하면 ENV Vars를 주피터 노트북에서 사용할 수 없게 됩니다.

나는 편집해야 했다:

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

그리고 내가 읽고 싶은 변수를 다음과 같이 유닛 파일에 넣는다:

Environment=MYOWN_VAR=theVar

그리고 그때서야 나는 그것을 주피터 노트북 안에서 읽을 수 있었다.




주피터 노트북에서 env 변수를 설정하려면 , 또는 마법 명령을 사용합니다. (현재 환경 변수를 자체적으로 출력하는 데 사용하십시오.)

참조:




노트북을 시작하기 전에 변수 집합이 필요한 경우에는 에서만 해결할 수 있었습니다.

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




관련(단기) 솔루션은 환경 변수를 예측 가능한 형식으로 단일 파일에 저장하여 터미널을 시작하거나 노트북을 읽을 때 가져올 수 있습니다. 예를 들어 환경 변수 정의를 빈 줄이나 공백 없이 형식으로 지정한 파일이 있습니다. 새 터미널 세션을 시작할 때 이 파일을 또는 파일에 소스할 수 있으며 다음과 같은 기능이 있는 노트북으로 읽을 수 있습니다,

import os
env_vars = !cat ../script/.env
for var in env_vars:
    key, value = var.split('=')
    os.environ[key] = value

나는 이 파일이 어디에나 존재할 수 있고 노트북 파일이 들어 있는 디렉토리와 관련하여 참조될 수 있다는 것을 보여주기 위해 상대 경로를 사용했다. 이것은 또한 코드 내의 변수 값을 아무 곳에도 표시하지 않는다는 장점이 있습니다.




우연히 만난 갓차: 다음 두 명령은 동일합니다. 첫 번째 사용 인용구를 기록해 두십시오. 사용할 때 문자열을 따옴표로 묶으면 따옴표가 변수 값의 일부로 포함되지만 원하는 값이 아닐 수 있습니다.

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

그리고.

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



파일에 변수를 설정할 수도 있습니다:

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

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

  • 다음 사이트에서 설명서를 읽으십시오
  • 실행을 실행하여 커널이 설치된 목록과 파일이 저장된 위치를 확인합니다.
  • kernel.json(예: 이름 있음)이 들어 있는 디렉터리를 새 디렉터리(예: )로 복사합니다.
  • 새 파일에서 를 변경합니다.
  • 환경 변수를 정의하는 사전을 추가합니다.

커널 json은 다음과 같이 보일 수 있습니다(설치된 kernel.json에서 및 을 제외하고는 아무것도 수정하지 않았습니다):

{
 "display_name": "Python 2 with environment",
 "language": "python",
 "argv": [
  "/usr/bin/python2",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "env": {"LD_LIBRARY_PATH":""}
}

이 접근 방식의 사용 사례 및 이점

  • 사용 사례에서 컴파일된 모듈(예: C로 작성된 모듈)이 로드되는 방식에 영향을 미치는 변수를 설정하고자 했습니다. 를 사용하여 이 변수를 설정하지 못했습니다.
  • 나는 다른 환경에서 여러 파이썬 커널을 가질 수 있다.
  • 환경을 변경하려면 커널을 전환/재시작하기만 하면 되지만 주피터 인스턴스를 다시 시작할 필요는 없습니다(다른 노트북에서 변수를 제거하고 싶지 않은 경우 유용함). 참고 - 단 -



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

python-dotenv 설치:

pip install python-dotenv

파일을 Jupyter 노트북에 로드합니다:

%load_ext dotenv
%dotenv



노트북이 Jupyter Hub에 의해 생성되는 경우 다음을 설정하여 Jupyter Hub 프로세스 환경에서 노트북 환경으로 전달할 수 있는 환경 변수 목록을 구성해야 할 수 있습니다

c.Spawner.env_keep = [VAR1, VAR2, ...]

()

참고 항목:




도커로 주피터 노트북을 실행할 수 있으며 종속성 누출을 관리할 필요가 없습니다.

docker run -p 8888:8888 -v /home/mee/myfolder:/home/jovyan --name notebook1 jupyter/notebook
docker exec -it notebook1 /bin/bash

그런 다음 열린 노트북에 대해 주피터에게 물어보십시오. Url은 복사 붙여넣을 수 있습니다. 변경한 경우 포트를 확인하십시오.

노트북을 만들고 다음을 노트북에 붙여넣습니다

!pip install python-dotenv
import dotenv
%load_ext dotenv
%dotenv

반응형