簡體   English   中英

如何檢查您使用的 REPL 類型?

[英]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.stdinstdout並比較它們的類型。

也許每個解釋器也有辦法鈎入自定義完成或格式化程序。

您可以嘗試從調用堆棧中查找信息。

那些花哨的 REPL 使用它們的啟動腳本進行初始化。

可以在另一個 REPL 中運行一個 REPL,因此您需要從上到下遍歷調用堆棧,直到從 REPL init 腳本中找到一個框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM