Foydalanadigan REPL turini qanday tekshirish mumkin?

Standart REPL, ptpython, ipython, bpython, va hokazo kabi Python REPL ning ko'plab turlari mavjud. Hozirda bu erda mavjud bo'lgan REPL ni tekshirishning usullari bormi?

Bir oz fon: Foydalanuvchining profili Eshitganingizdek, dir() yaratish uchun pdir2 ni ishlab chiqdim. bosib chiqarish. Men qarama-qarshiligim bu uchinchi tomon REPLs bilan mos bo'lishni talab qilishdir, lekin birinchi navbatda dasturni qaysi REPL dasturida ishlayotganligini bilish kerak.

4
OK, shuning uchun ipython hal qilindi. bpython va bpython bu kabi tekshiruvni ta'minlamaydi.
qo'shib qo'ydi muallif laike9m, manba
OK, shuning uchun ipython hal qilindi. bpython va bpython bu kabi tekshiruvni ta'minlamaydi.
qo'shib qo'ydi muallif laike9m, manba
Sinab ko'rdim, tizimning python o'rnini ko'rsatdi, masalan /usr/local/opt/python3/bin/python3.6 .
qo'shib qo'ydi muallif laike9m, manba
Yaxshi, sys.stdin turli natijalar beradi. Men yana oqlangan yo'lni ko'rayapman.
qo'shib qo'ydi muallif laike9m, manba
qo'shib qo'ydi muallif languitar, manba
qo'shib qo'ydi muallif languitar, manba
Ehtimol, heuristically: sys.executable
qo'shib qo'ydi muallif languitar, manba
Ehtimol, heuristically: sys.executable
qo'shib qo'ydi muallif languitar, manba
Ax. Ehtimol, sys.stdin va stdout ajratishning yaxshiroq yo'llarini beradi. Biroq, ular ilovalar tomonidan qayta belgilanishi mumkin.
qo'shib qo'ydi muallif languitar, manba

6 javoblar

OK, nihoyat sodda, ammo ishonchli tarzda topildi: sys.modules ni tekshirish.

Nusxalashingiz va foydalanishingiz mumkin bo'lgan funksiya.

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'
1
qo'shib qo'ydi

OK, nihoyat sodda, ammo ishonchli tarzda topildi: sys.modules ni tekshirish.

Nusxalashingiz va foydalanishingiz mumkin bo'lgan funksiya.

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'
1
qo'shib qo'ydi

Ehtimol, eng yaxshilar sys.stdin va stdout ga qarash va ularning turlarini solishtirishdir.

Ehtimol, har bir tarjimon uchun maxsus tugallanish yoki formatlashni bajarish uchun yo'llar ham mavjud.

0
qo'shib qo'ydi

Ehtimol, eng yaxshilar sys.stdin va stdout ga qarash va ularning turlarini solishtirishdir.

Ehtimol, har bir tarjimon uchun maxsus tugallanish yoki formatlashni bajarish uchun yo'llar ham mavjud.

0
qo'shib qo'ydi

Qo'ng'iroqlar to'plamidan ma'lumot topishga harakat qilishingiz mumkin.

Bunday ajoyib REPLlar ishga tushirish uchun dastlabki skriptni ishlatadi.

REPL ni boshqa birida ishga tushirish mumkin, shuning uchun siz REPL init skriptidan ramkalarni topish uchun yuqoridan pastgacha chaqiriqlarni to'plashingiz kerak.

0
qo'shib qo'ydi

Qo'ng'iroqlar to'plamidan ma'lumot topishga harakat qilishingiz mumkin.

Bunday ajoyib REPLlar ishga tushirish uchun dastlabki skriptni ishlatadi.

REPL ni boshqa birida ishga tushirish mumkin, shuning uchun siz REPL init skriptidan ramkalarni topish uchun yuqoridan pastgacha chaqiriqlarni to'plashingiz kerak.

0
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming