2011-11-07 75 views
4

使用IPython的0.11,如果我键入一个函数的定义,像如何在ipython配置文件中定义函数?

def f(s): print s 

然后我可以使用该功能在IPython的会议,但我不知道如何在ipython_config.py文件定义 。 如果我只是在文件中输入函数定义,并尝试使用它未定义的函数。

有什么想法?

回答

9

这里有两个答案:

首先,像上面的超级简单的功能,你可以在exec_lines定义它们,如:

c.InteractiveShellApp.exec_lines = [ "def f(s): print s" ] 

(你可以定义任意复杂的功能,这样一来,但它很烦人的超越几行)

对于更复杂的代码,你可以写一个脚本,你想在启动时运行,并添加到列表exec_files

c.InteractiveShellApp.exec_files = [ "/path/to/myscript.py" ] 
# if you put the script in the profile dir, just the filename will suffice 

我们意识到这有点烦人,因此在0.12中,配置文件目录中会有一个启动文件夹,并且您放入的所有文件都会自动运行。这实际上是为exec_files增加了一个额外的glob.glob('*.py')(当然,你可以在0.11中自己做)。

+0

我把脚本配置文件名称,但必须添加命令行被发现没有它,配置文件的路径不起作用。 – skeept

2

您需要定义一个python文件,以在ipython启动时运行。您可以通过设置exec_files列表做到这一点:

c = get_config() 
c.InteractiveShellApp.exec_files = [ 
     '/tmp/mymodule.py' 
] 

然后我的文件 “/tmp/mymodule.py”:

def foo(): 
    print "bar" 

最后,使用此:

$ ipython 

In [1]: foo() 
bar 

更多关于ipython配置文件的信息可以在这里找到:http://ipython.org/ipython-doc/dev/config/ipython.html

0

可以在profile目录中的startup目录下的*.py*.ipy文件中定义多行功能。

(注意:*.ipy*.py文件被区别对待。)

配置文件目录可以使用

$ ipython locate profile 
相关问题