ipython的配置文件在何处/如何/在什么情况下执行?

时间:2012-08-06 22:01:41

标签: ipython

ipython的配置文件(以c = get_config()开头)在哪里执行?我问,因为我想了解在ipython中做了什么顺序,例如如果包含为c.InteractiveShellApp.exec_lines,某些命令将无效。

这与我的另一个问题Log IPython output?有关,因为我想要访问logger属性,但我无法弄清楚如何在配置文件中访问它,并且到时候exec_lines运行,记录器已经启动(为时已晚)。

编辑:我已经接受了基于在ipython0.12+中使用启动文件的解决方案。以下是我对该解决方案的实施:

from time import strftime
import os.path

ip = get_ipython()

#ldir = ip.profile_dir.log_dir 
ldir = os.getcwd()
fname = 'ipython_log_' + strftime('%Y-%m-%d') + ".py"
filename = os.path.join(ldir, fname)
notnew = os.path.exists(filename)


try:
  ip.magic('logstart -o %s append' % filename)
  if notnew:
      ip.logger.log_write( u"########################################################\n" ) 
  else:
      ip.logger.log_write( u"#!/usr/bin/env python\n" )
      ip.logger.log_write( u"# " + fname + "\n" )
      ip.logger.log_write( u"# IPython automatic logging file\n" )
  ip.logger.log_write( u"# " + '# Started Logging At: '+ strftime('%Y-%m-%d %H:%M:%S\n') ) 
  ip.logger.log_write( u"########################################################\n" ) 
  print " Logging to "+filename
except RuntimeError:
    print " Already logging to "+ip.logger.logfname

与提议的解决方案只有两个细微差别: 1.将日志保存到cwd而不是一些日志目录(尽管我更喜欢这个...) 2. ip.magic_logstart似乎不存在,而应该使用ip.magic('logstart')

1 个答案:

答案 0 :(得分:3)

配置系统设置一个包含get_config()函数的特殊命名空间,运行配置文件,并收集值以在创建对象时将它们应用于对象。参考您之前的问题,它看起来不像是记录输出的配置值。您可能希望在配置后开始自己记录,此时您可以更精确地控制它。请参阅自动开始记录的this example

你的另一个问题提到你在一个系统上限制为0.10.2:它有一个完全不同的配置系统,甚至不会查看同一个文件。