2013-09-28 5 views
3

뛰어난 ipython 노트북에는 노트북의 복사본을 .py 스크립트 파일로 자동 저장하는 편리한 --script 명령 줄 플래그가 있습니다 (머리말 및 마름 다운 셀을 제거함). 노트북을 연 후 노트북 내부에서이 기능을 전환 할 수 있습니까? 분명히이 옵션은 %config 마법에 액세스 할 수 없습니다.ipython 노트북을 프로그래밍 방식으로 스크립트로 저장

이 변환을 수행하는 셀이있는 방법이 있습니까? 변환을 수행하는 데 사용할 수있는 명령 줄 도구가 있습니까?이 명령을 노트북에서 실행되는 셸 명령에 포함 시키십시오. (nbconvert가 .py으로 출력되지 않는 것 같습니다.)

제가 물어 보는 이유는 제가 노트북에 자식 저장소가 있다는 것입니다. 사용자가 노트북을 직접 변경할 때 .py 파일이 최신 상태로 유지되어야합니다. 왜냐하면 .py 파일이 노트북의 내용에서 C++ 코드를 작성하는 데 사용되기 때문입니다. 그러나 나는 항상 잊을 것이기 때문에 사용자에게 --script 플래그를 설정할 것을 의지 할 수는 없다. (그리고 나는 그 사용자 그룹에 자신을 포함시킨다.)

답변

3

더 : ipython은 ipython_notebook_config.py 파일의 로컬 복사본을 존중합니다. 그래서 그냥 추가 할 수 있습니다.

c = get_config() 
c.NotebookManager.save_script = True 

내 노트 디렉토리에 같은 파일에 추가 할 수 있습니다. 분명히 ipython은 먼저 ~/.ipython/profile_default/ipython_notebook_config.py을 읽은 다음 해당 파일의 로컬 복사본을 읽습니다. 따라서 사용자 설정 철거 걱정없이 사용하는 것이 안전합니다.

문서에서 나에게 명확한 것은 아니지만 방금 시도한 결과 작동했습니다.

0

오. 내 실수. nbconvert 스크립트 변환을 처리 할 수 ​​있습니다.

물론
!ipython nbconvert --to python MyNB.ipynb 

,이 라인은 스크립트 자체에 실행 것마다 노트북을 다시 저장하려고 의미 스크립트, 저장 얻을 것이다 : 그래서 이런 식으로 뭔가를 할 수 있습니다. 이것은 조금 순환적인 것이고, 내가 더 이상한 해킹의 일부로 문제를 일으킬 수 있다고 상상할 수 있습니다. 대신, 우리는 단지 다음과 같이 포장하여 ipython에서 실행하다고 보장 할 수 있습니다 : 변환 프로세스가 자동으로 일반 파이썬을 허용 무언가에 ! 구문으로 변환됩니다

try : 
    if(__IPYTHON__) : 
     !ipython nbconvert --to python MyNB.ipynb 
except NameError : 
    pass 

참고. 이것은 분명히 --script 변환의 경우가 아닙니다. 그래서이 작업을 수행 할 수있는 여분의 안전한 방법은 (적어도 내 목적을 위해) 아직

try : 
    if(__IPYTHON__) : 
     get_ipython().system(u'ipython nbconvert --to python MyNB.ipynb') 
except NameError : 
    pass 
관련 문제