[英]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.