2013-07-17 5 views
7

문서에 따르면 매크로를 정의하고 저장할 수 있어야합니다. 그러면 다음 번에 IPython 셸을 시작할 때 매크로를 사용할 수 있습니다. 그러나, 그것은 작동하지 않습니다IPython에서 매크로 저장

In [4]: print "Foobarbatbizbuzzbonk" 
Foobarbatbizbuzzbonk 

In [5]: %macro foo 4 
Macro `foo` created. To execute, type its name (without quotes). 
=== Macro contents: === 
print "Foobarbatbizbuzzbonk" 

In [6]: %store foo 
Stored 'foo' (Macro) 

In [7]: quit() 

을 내가 다시 어떤 매크로 IPython 쉘을 시작하지 않는 경우 :이 작동하지 않는 이유

In [1]: foo 
--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-1-d3b07384d113> in <module>() 
----> 1 foo 

NameError: name 'foo' is not defined 

In [2]: %macro 
Out[2]: [] 

사람이 알고 있나요을?

답변

7

나는 두 곳의 모호한 장소에서 이에 대한 답변을 발견했습니다.

첫째,/.ipython, 그것이 말하는 $ HOME에있는 README에 "IPython 구성에 대한 자세한 내용은 수행 ipython config -h"즉 다음과 같은 조언을 포함하여 도움의 무리를 생산 하

:

To initialize a profile with the default configuration file, do:: 

    $> ipython profile create 

and start editing `IPYTHONDIR/profile_default/ipython_config.py` 

좋습니다. 그거 했어. 이제이 파일에 넣을 내용은 Configuring the ipython command line application에 있습니다. 그러나이 문서에는 % 저장소가 언급되어 있지 않습니다. 경량의 지속성에 대한

% 저장소 마법 : 확장 당신이 말하는 항목 storemagic을 찾을 수 IPython, 함께 번들로 아래

마지막으로, 구성 및 사용자 정의에 내 대답을 발견했다. 변수, 별칭 및 IPython의 데이터베이스에 매크로를 저장합니다. 시작시 자동 저장 변수를 복원하려면 ipython_config.py 파일이 추가

c.StoreMagic.autorestore = True 

은, 그 추가 IPython를 다시 시작하고 쾅! 내 매크로가있다. 시원한!

4

ipython에 대한 좋은 문서를 찾는 것이 때로는 악몽입니다 (기본 사항). 이 대화 형 콘솔이 프로그래밍의 진정한 지도자를 위해 만들어진 것 같습니다. 적어도 그것은 후방 사용을위한 변수를 저장하는 것과 같은 간단한 문제를 해결하려고 할 때 느끼는 것입니다 ... matlab에서 단순한 것 이상.

그러나 일반적으로 단지 ipython 입력 ipython 열고

그것은 원래 이름 (들)을 사용하여 데이터를 복구해야 -r % 저장소를 작성하려고 ... 당신의 qestion에 대답합니다. 나는 여전히 파일에 변수를 저장하거나 내가 원하는 가변 코드 만 사용하는 것을 모른다. BTw, 저장된 변수의 이름을 알고 싶으면 % store를 입력하십시오.

희망은 당신을 위해 작동합니다.

+1

그렇습니다. 도큐 스는 읽기가 매우 어렵습니다. ( – tim

7

셸에서 매크로를 정의한 다음 저장하는 대신 시작 파일에 매크로를 정의 할 수 있습니다. 예를 들어, 다음 행을 IPYTHONDIR/profile_default/ipython_config에 넣을 수 있습니다.평가 : 나는 마법의 명령 매크로를 정의하는 방법을 생각하지 않은

get_ipython().define_macro('clr',"""get_ipython().magic(u'%reset -sf')"""); 

: 당신은 마법의 명령에 대한 매크로를 정의하려면

get_ipython().define_macro('foo','print "Foobarbatbizbuzzbonk"') 

, 다음과 같이 사용할 수 있습니다 (ipython의 네임 스페이스에서 tmp.py 파일을 실행하기 위해 '% run -i tmp'대신에 'rn tmp'를 타이핑).

+2

OP가 매크로를 영구적으로 요구했기 때문에 더 좋은 대답입니다. % 저장소는 또한 변수를 지속적으로 만들어 주어 저에게 제공합니다 몇 가지 불쾌한 일이 생길 때가 있습니다. – dirkjot

+1

이 작업을하려면 먼저 ipython --init'을 실행해야합니다. 그러면 개인 설정 (기본 프로필)이 만들어지고, ipython locate를 실행하여 IPYTHONDIR을 찾습니다. – dirkjot