Creo que sé lo que quiere hacer. Es posible que desee comprobar IPython, porque no puede iniciar el intérprete de Python sin dar la opción -i
(al menos no directamente). Esto es lo que hice en mi proyecto:
def ipShell():
'''Starts the interactive IPython shell'''
import IPython
from IPython.config.loader import Config
cfg = Config()
cfg.TerminalInteractiveShell.confirm_exit = False
IPython.embed(config=cfg, display_banner=False)
# Then add the following line to start the shell
ipShell()
Es necesario tener cuidado, sin embargo, porque la cáscara tendrá el espacio de nombres del módulo que la función se define ipShell()
. Si coloca la definición en el archivo que ejecuta, podrá acceder al globals()
que desee. Podría haber otras soluciones para inyectar el espacio de nombres que desee, pero usted tendría que dar argumentos a la función en ese caso.
EDITAR
la siguiente función por defecto del espacio de nombres de la persona que llama (__main__.__dict__
).
def ipShell():
'''Starts the interactive IPython shell
with the namespace __main__.__dict__'''
import IPython
from __main__ import __dict__ as ns
from IPython.config.loader import Config
cfg = Config()
cfg.TerminalInteractiveShell.confirm_exit = False
IPython.embed(config=cfg, user_ns=ns, display_banner=False)
sin argumentos adicionales.
Docs para el archivo de inicio interactiva están ahora aquí: https://docs.python.org/3/tutorial/appendix.html#the-interactive-startup-file –