비대화 형으로 IPython / Jupyter 노트북 실행


79

명령 줄에서 비대화 형으로 IPython / Jupyter 노트북을 실행하고 결과 .ipynb파일을 실행 결과와 함께 저장할 수 있는지 아는 사람이 있습니까? 아직 가능하지 않다면 phantomJS, 커널을 켜고 끄는 것, 웹 서버를 켜고 끄는 것을 구현하는 것이 얼마나 어려울까요?

좀 더 구체적으로 말하자면 이미 노트북이 original.ipynb있고 해당 노트북의 모든 셀을 다시 실행하고 결과를 새 노트북에 저장 한다고 가정 해 보겠습니다.new.ipynb .하지만 브라우저 나 브라우저에서 상호 작용할 필요없이 명령 줄에서 하나의 명령으로이 작업을 수행합니다. 커널 또는 웹 서버를 닫고 이미 실행중인 커널 또는 웹 서버가 없다고 가정합니다.

예제 명령 :

$ ipython notebook run original.ipynb --output=new.ipynb

답변:


70

예, 가능하고 쉽습니다. (대부분) 2.0 용 IPython 코어에있을 것 입니다. 지금 은 해당 예제 를 살펴 보는 것이 좋습니다 .

[편집하다]

$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb

이제 Jupyter NbConvert에 있습니다. NbConvert는 Preprocessor기본적으로 비활성화되어 있는 여러 개의를 제공하며 그중 두 개 ( ClearOutputPreprocessorExecutePreprocessor)가 중요합니다. c.<PreprocessorName>.enabled=True(대문자는 python)을 통해 (local | global) 구성 파일에서 활성화 하거나 명령 줄 --ExecutePreprocessor.enabled=True에서 나머지 명령을 평소 와 같이 유지합니다.

--ExecutePreprocessor.enabled=True편리한이 --executeNbConvert의 최신 버전에서 사용할 수있는 별칭을. 다음과 결합 될 수 있습니다.--inplace원하는 경우

예를 들어 헤드리스 노트북을 실행 한 후 html로 변환합니다.

$ jupyter nbconvert --to=html --execute RunMe.ipynb

출력물을 제거한 후 PDF로 변환

$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb

이것은 (물론) .NET <insert-your-language-here>을 설정하면 커널을 생성하여 비 파이썬 커널에서 작동합니다 --profile=<your fav profile>. 변환은 노트북을 다시 실행해야하는 한 정말 오래 걸릴 수 있습니다. 노트북에서 노트북으로 변환 할 수 있습니다.--to=notebook옵션으로 .

사용 사례에 따라 설정 / 설정 해제해야 할 수있는 다양한 기타 옵션 (시간 초과, 허용 오류 등)이 있습니다. 자세한 내용은 설명서 및 물론 jupyter nbconvert --help, --help-all또는 nbconvert 온라인 설명서 를 참조하십시오.


1
올바른 방향을 알려 주셔서 감사합니다. 정확한 코드가 게시되지 않았기 때문에 요점 중 하나를 포크하고 출력 코드를 추가하여 다음 명령 줄에서 원하는 $ ipnbdocttest.py original.ipynb new.ipynb gist.github.com/davidshinn/6110231
davidshinn

3
IPython 2에 포함되어 있지 않습니다. IPython 3을 위해 진행 중입니다
Matt

7
이 지금 것 같다 (Ipython 3.1.0) : ipython nbconvert --to=html --execute RunMe.ipynb
patricksurry

5
@NoahR Try --ExecutePreprocessor.timeout=-1 ref
Lenna

5
최신 jupyter (4.1.0)이 실제로 노트북을 실행할 수 있습니다 비 대화식 jupyter nbconvert --to notebook --execute --allow-errors notebook.ipynb아마 대답은 편집 할 수
mgalardini

20

이 기능이 핵심의 일부가 될 때까지 원하는 작업을 수행하는 작은 명령 줄 앱을 모았습니다. runipy라고하며 pip install runipy. 소스와 추가 정보는 github에 있습니다 .


runipy는 나에게 잘 작동하지 않는 것 같습니다. signature필드를 업데이트하지 않고 결과적으로 (음, 결과라고 생각합니다) 내 SVG는 실제로 렌더링되지 않습니다. IPython은 __repr__대신 일반 텍스트 렌더링 을 표시하는 것을 선호 합니다. .
akim

1

원본 .ipunb 파일을 실행하고 바꿉니다.

jupyter nbconvert --ExecutePreprocessor.timeout=-1 --to notebook --inplace --execute original.ipynb


-5

명령 줄을 통해 iPython-Notebook-server를 실행할 수 있습니다.

ipython notebook --pylab inline

이렇게하면 비대화 형 모드로 서버가 시작되고 모든 출력이 코드 아래에 인쇄됩니다. 그런 다음 코드 및 출력을 포함하는 .ipynb- 파일을 저장할 수 있습니다.


응답 해 주셔서 감사합니다. 그러나 웹 브라우저에 개입하지 않아도되고 커널과 웹 서버를 닫지 않아도되는보다 구체적인 솔루션을 찾고있었습니다. 더 구체적으로 질문을 편집했습니다.
davidshinn 2013

이 경우 진행 방법을 모르겠습니다. 정기적으로이 작업을 수행 할 계획입니까? iPython-Notebook은 브라우저에서 대화식으로 사용하도록 설계되었으며 명령 줄에서 특정 ipynb-Files를 저장하는 것이 다소 이상하게 보입니다.
ala

예, 가능하다면이 작업을 자주 수행 할 계획입니다. 데이터 소스가 자주 변경되고 생성 된 코드와 인터리브 된 pandas를 사용하여 진단 출력을보고 싶은 경우에 매우 유용합니다. ipython 노트북이 정확히 수행하는 작업입니다. 그러나 이러한 유형의 프로세스가 하루에 많이 실행되는 경우 배치 실행이 가능하고 나중에 로그 파일이 생성 된 것처럼 출력을 볼 수 있으면 더 좋을 것입니다. 표준 로깅의 문제점은 서로 인터리브 된 코드와 출력을보기가 어렵다는 것입니다.
davidshinn jul.

4
이것은 나에게 놀랍도록 유용한 사용 사례처럼 보입니다. 템플릿 노트북을 가져 와서 약간 매개 변수화 한 다음 브라우저를 건드리지 않고도 인쇄 가능한 완전 실행 솔루션을 얻을 수 있습니다.
holdenweb 2014-08-08
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.