在阅读了一些文档(并查看了线索的源代码)后,我找到了解决这个问题的方法。
现在,您应该将所有自定义函数移动到.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