[英]How to inspect the type of REPL you're using?
Python REPL 有很多种,比如默认的 REPL、ptpython、ipython、bpython 等。当我已经在其中时,有没有办法检查当前的 REPL 是什么?
一点背景:
您可能听说过,我制作了pdir2来生成漂亮的dir()
打印。 我面临的一个挑战是让它与那些第三方 REPL 兼容,但首先我需要知道程序在哪个 REPL 中运行。
好的,终于找到了一个简单但超级可靠的方法:检查sys.modules
。
您可以复制和使用的功能。
import sys
def get_repl_type():
if any('ptpython' in key for key in sys.modules):
return 'PTPYTHON'
if any('bpython' in key for key in sys.modules):
return 'BPYTHON'
try:
__IPYTHON__
return 'IPYTHON'
except NameError:
return 'PYTHON'
可能你能做的最好的事情就是查看sys.stdin
和stdout
并比较它们的类型。
也许每个解释器也有办法钩入自定义完成或格式化程序。
您可以尝试从调用堆栈中查找信息。
那些花哨的 REPL 使用它们的启动脚本进行初始化。
可以在另一个 REPL 中运行一个 REPL,因此您需要从上到下遍历调用堆栈,直到从 REPL init 脚本中找到一个框架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.