2012-05-14 31 views
2

我有一個老ipy_user_conf.py,其中包括我的簡單功能到用戶的命名空間是這樣的:如何定義要從IPython提示中調用的自定義函數?

import IPython.ipapi 
ip = IPython.ipapi.get() 

def myfunc(): 
    ... 

ip.user_ns['myfunc'] = myfunc 

然後,我可以在提示符下使用MYFUNC。

但是,我更新到IPython 0.12.1,現在ip_user_conf.py不起作用。我還沒有看到如何將提示的自定義函數轉換爲新的配置模型。

哪種方法可以做到這一點?

此致敬禮, Manuel。

UPDATE:話鋒一轉質疑

回答

2

讀取位的文件(及引線用源代碼偷看),我發現這個問題的解決方案後。

現在,您應該將所有自定義函數移動到.ipython目錄中的模塊中。因爲我在做什麼是一個簡單的函數,返回的Git分支和狀態爲當前目錄,我創建了一個名爲gitprompt.py文件,然後我列入exec_file配置選項的文件名:

c.InteractiveShellApp.exec_files = [b'gitprompt.py'] 

在這樣所有的定義文件被放置到用戶名稱空間中。所以,現在我可以用它在我裏面提示:

# Input prompt. '\#' will be transformed to the prompt number 
c.PromptManager.in_template = br'{color.Green}\# {color.LightBlue}~\u{color.Green}:\w{color.LightBlue} {git_branch_and_st} \$\n>>> ' 

# Continuation prompt. 
c.PromptManager.in2_template = br'... ' 

注意,爲了使功能表現爲這樣的(即每次打印提示時間稱呼),你需要使用IPython.core.prompts.LazyEvaluation類。你可以將它用作你的函數的裝飾器。 gitprompt.py已被置於公共領域作爲要點:https://gist.github.com/2719419

+0

非常有用。謝謝。 – noumenon