python - notebook - pycharm professional
Problemas al mostrar el intérprete(IPython) después de ejecutar el programa en PyCharm (1)
Honestamente, ¿has intentado ejecutar una versión más nueva de PyCharm e importar tu configuración? 3.5 está bastante desactualizado (estoy en 4.5.3 yo mismo, la versión más reciente es 5.0) y creo que se ofrece más soporte para IPython en las versiones más nuevas. https://www.jetbrains.com/pycharm/help/ipython.html . Especialmente si eres un estudiante, no debería doler intentarlo. Sé que las versiones anteriores de PyCharm tenían más errores que las versiones recientes.
Tengo PyCharm Professional Edition 3.5 5.0 configurado para
use IPython cuando sea posible
y en mis Configuraciones de ejecución / depuración establecí
mostrar intérprete después
Utilizo mucho el Intérprete interactivo y realmente me gusta IPython, pero hay algunas cosas que no me gustan sobre la forma en que esto se maneja en PyCharm:
cualquier
input()
en mis programas devuelve cadenas vacías.Además, cuando ocurre un error, ya no puedo interactuar con el Programa. (Puedes cuando ejecutas un programa de Python con la bandera
-i
)Hay mucho espacio entre la última línea de la consola y la línea actual
En IPython, el indicador ...:
en un bloque de código no tiene sangría de 2 espacios y, por lo tanto, no está alineado con el indicador In [?]:
Cuando ocurre un error, obtengo algo como este
Traceback (most recent call last): File "C:/Program Files (x86)/PyCharm/helpers/pydev/pydev_run_in_console.py", line 69, in <module> globals = run_file(file, None, None) File "C:/Program Files (x86)/PyCharm/helpers/pydev/pydev_run_in_console.py", line 29, in run_file pydev_imports.execfile(file, globals, locals) # execute the script File "C:/Program Files (x86)/PyCharm/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile exec(compile(contents+"/n", file, ''exec''), glob, loc) File "C:/Users/ca/Python/Bundeswettbewerb Informatik/Aufgabe2/Ameisen.py", line 133, in <module> function_that_caused_error()
No necesito / quiero ver el traceback desde el interior.Cuando se ejecuta un archivo, IPython necesita iniciarse, lo que lleva algunos segundos, incluso si no voy a usar el interpretado después. Me gustaría que PyCharm inicie IPython después de que el programa haya finalizado o cuando empiece a depurar (puede iniciar IPython en una consola interactiva al
import IPython; IPython.start_ipython()
Hay algunas otras cosas menores que no me gustan
Cuando se inicia IPython, imprime mucho texto en la consola. No quiero ver nada de eso, excepto tal vez el número de versión (generalmente puedes hacer esto con la
--no-banner
, pero agregarlo a las opciones del intérprete no funciona)cuando escribe algo y presiona
Up
, reemplaza lo que he escrito con el último elemento de mi historial en lugar de reemplazarlo con el último elemento de mi historial que comienza con lo que he escrito. Plain IPython hace esto.Me gustaría completar el código automáticamente sin tener que presionar
Ctrl + Space
en la consola
Los "problemas" están ordenados por importancia. ¿Alguien sabe cómo cambiar algunos de ellos? Podría dejar de usar IPython, lo que resolvería el segundo, el tercero y el cuarto problema, pero los otros aún persistirían. Todo este comportamiento (excluyendo las cosas de IPython) se implementa muy bien en PyScripter.
EDITAR:
He encontrado soluciones para los primeros dos problemas y el problema con el banner de IPython. La fuente del intérprete interactivo PyDev (que PyCharm usa) está ubicada, en Windows, en C:/Program Files (x86)/PyCharm/helpers/PyDev
(la ruta puede variar por supuesto).
Entonces, el primer problema puede resolverse editando el archivo _pydev_imps/_pydev_execfile.py
. Envuelva la línea 18 ( exec(compile(contents+"/n", file, ''exec''), glob, loc)
) en un try ... except
bloque con el siguiente código como el manejador de excepción importation import traceback; traceback.print_exc()
import traceback; traceback.print_exc()
. Esto terminará su programa de Python si hay un error al tiempo que le permite interactuar con la variable después.
El problema 2 se puede resolver editando el fuego pydev_run_in_console.py
. Agregue esta importación al principio del archivo: from pydev_console_utils import StdIn
e inserte sys.stdin = StdIn(interpreter, host, client_port)
después de lo que era la línea 61 antes de agregar la importación.
Para resolver el problema con el banner, debe descargar la versión más reciente del código fuente de PyDev aquí y reemplazar los archivos pydev_ipython_console
y pydev_ipython_console_011
por sus versiones más recientes. En la versión más nueva del primer archivo, el método __init__
en la línea 22 tiene un argumento llamado show_banner
con el valor predeterminado True
. Cambia esto a False
.