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
'개발하자' 카테고리의 다른 글
주피터 노트북이 시작되지 않음(가져오기 오류: 가져오는 동안 DLL 로드 실패) (0) | 2023.03.04 |
---|---|
VSCode Jupyter - 동일한 백엔드를 사용하더라도 다른 파일에 다르게 표시되는 플롯 (0) | 2023.03.04 |
터미널에서 파이썬 함수를 호출할 수 있습니까? (0) | 2023.03.03 |
테라폼을 생성하기 전에 리소스가 있는지 확인 (0) | 2023.03.02 |
주피터를 설정하려면 어떻게 해야 하나요장고를 위한 아이피톤 노트북? (1) | 2023.03.02 |