首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyROOT如何更改python解释器?

PyROOT如何更改python解释器?
EN

Stack Overflow用户
提问于 2016-06-09 23:58:51
回答 1查看 208关注 0票数 4

如果我试图在python中运行.ls,那么我就会得到一个SyntaxError。

代码语言:javascript
复制
>>> .ls
  File "<stdin>", line 1
    .ls
    ^
SyntaxError: invalid syntax

但是,如果我导入PyROOT,它会使这个语法变得合法(并且在根中这样做,列出当前文件的内容;在这里的示例中,我没有打开任何内容)。

代码语言:javascript
复制
>>> import ROOT
>>> .ls
>>>

类似地,.q在导入根后退出Python解释器,就像在普通根解释器中所做的那样。

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-10 10:32:09

它可以在lib/ROOT.py中找到。

有一个条件是,如果没有ipython,则重新定义sys.excepthook:

代码语言:javascript
复制
sys.excepthook = _excepthook

这反过来又包含了如下内容:

代码语言:javascript
复制
### RINT command emulation     
------------------------------------------------------
def _excepthook( exctype, value, traceb ):
 # catch syntax errors only (they contain the full line)
   if isinstance( value, SyntaxError ) and value.text:
      cmd, arg = split( value.text[:-1] )

    # mimic ROOT/CINT commands
      if cmd == '.q':
         sys.exit( 0 )

或者几行低语:

代码语言:javascript
复制
  elif cmd == '.ls':
     return sys.modules[ __name__ ].gDirectory.ls()

如果不做这些工作,就会恢复正常的处理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37738012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档