dar más detalles sobre la respuesta de IVA: embedding-a-shell, incoporating code
y IPython.
def prompt(vars=None, message="welcome to the shell"):
#prompt_message = "Welcome! Useful: G is the graph, DB, C"
prompt_message = message
try:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed(argv=[''],banner=prompt_message,exit_msg="Goodbye")
return ipshell
except ImportError:
if vars is None: vars=globals()
import code
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
# calling this with globals ensures we can see the environment
print prompt_message
shell = code.InteractiveConsole(vars)
return shell.interact
p = prompt()
p()
¡Gracias a todos! Para el registro, la forma más fácil de utilizar el módulo de código para lograr esto es la siguiente: código de importación code.interact (= globales locales()) –
Para obtener las variables locales en el espacio de nombres, así, se necesitan ' code.interact (local = dict (globals(), ** locals()) '. Note la adición de' ** locals'. Me preguntaba esta pregunta yo mismo, y su comentario fue la mejor respuesta que encontré: -) –