2011-11-07 47 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 
相關問題