Existe uma maneira de forçar programaticamente um script Python a cair em um REPL em um ponto arbitrário de sua execução, mesmo se o script foi iniciado a partir da linha de comando?
Estou escrevendo um programa de plotagem rápido e sujo, no qual desejo ler dados de stdin ou um arquivo, plotar e, em seguida, soltar no REPL para permitir que o gráfico seja personalizado.
python
interactive
dsimcha
fonte
fonte
Eu freqüentemente uso isto:
fonte
pdb
, você pode usarinteract
.Veja como você deve fazer isso (IPython> v0.11):
Para IPython <= v0.11:
Você deve usar IPython, o Cadillac de Python REPLs. Consulte http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython
Da documentação:
fonte
Para usar o iPython e a funcionalidade do depurador, você deve usar ipdb ,
Você pode usá-lo da mesma forma que o pdb, com a adição de:
fonte
Você pode iniciar o depurador:
Não tenho certeza do que você deseja para o REPL, mas o depurador é muito semelhante.
fonte
Acabei de fazer isso em um dos meus próprios scripts (ele é executado dentro de uma estrutura de automação que é um grande PITA para instrumentar):
Basta colocá-lo onde quiser um ponto de interrupção e você pode verificar o estado usando a mesma sintaxe do interpretador python (embora não pareça permitir que você faça importações de módulo). Não é muito elegante, mas não requer nenhuma outra configuração.
fonte