如何在ipython配置文件中定义函数?

时间:2011-11-07 02:41:10

标签: python ipython

如果输入函数定义,请使用ipython 0.11,例如

def f(s): print s

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

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

这里有两个答案:

首先,对于 super 这样的简单函数,您可以在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中自己做)。

答案 1 :(得分:2)

你需要定义一个在ipython启动时运行的python文件。您可以通过设置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

答案 2 :(得分:0)

可以在配置文件目录中*.py目录下的*.ipystartup文件中定义多行功能。

(请注意*.ipy*.py文件的处理方式不同。)

可以使用

从命令行中发现配置文件目录
$ ipython locate profile