Ejecutando python/ruby interactivamente desde Notepad++ (consola NppExec)

Ejecutando python/ruby interactivamente desde Notepad++ (consola NppExec)

He estado usando la consola NppExec en el Bloc de notas para ejecutar scripts de Python y Ruby usando python script_name.pyo y ruby script_name.rb, en su mayor parte, esto funciona bien: la salida se redirige a la consola NppExec y no tengo que salir de Notepad++ para realizar pruebas. mi guión.

Sin embargo, lo que realmente me gustaría poder hacer es ejecutar una sesión interactiva de Python o Ruby desde la consola NppExec. Por ejemplo, simplemente pythono simplemente irbno permitirinteractivamentetrabajando en la consola.

¿Alguien tuvo suerte con esto?

Si esto fuera posible, significaría poder ejercitar funciones/métodos en un script determinado desde la consola, todo sin tener que salir de Notepad++.

Respuesta1

Esto no parece posible. De la documentación de NppExec, cito:

NppExec NO es...

  • NppExec no es un emulador de consola. NppExec redirige la salida del proceso en ejecución a su ventana de Consola y puede redirigir la entrada de la ventana de Consola al proceso en ejecución (con algunas limitaciones). La consola de NppExec no es una ventana de consola "real" (en realidad, utiliza el control RichEdit para la entrada/salida de texto), no proporciona un búfer de pantalla de consola. Por lo tanto, una aplicación de consola que requiere un búfer de pantalla de consola "real" debe ejecutarse en su propia ventana de consola (usando el comando NPP_RUN).

  • NppExec no es un intérprete de comandos. NppExec no comprende comandos como "copiar", "llamar", "para", etc. porque no es una consola "real" ni un emulador de consola. Sin embargo, NppExec tiene su propia implementación interna de comandos como 'cls', 'cd', 'dir', 'echo', 'set' ('env_set') e introduce otros comandos específicos. También puede usar "cmd /c" para ejecutar cualquier comando de cmd dentro de NppExec.

  • NppExec no es un compilador. NppExec le permite utilizar herramientas y compiladores externos para procesar/compilar su archivo actual, pero no tiene la capacidad de hacerlo por sí solo. No hay magia aquí :)

Dado que no hay un búfer de pantalla de consola, la consola NppExec no puede considerarse una consola "real".

Es mucho mejor que pruebes una aplicación diseñada para pruebas interactivas de código, comoIPythonpara pitón.

Respuesta2

Editar(Agregando el modificador -u sin búfer para un mejor rendimiento)

Resulta que esto es posible para Python usando el -imodificador (inspeccionar) y el modificador -u (salida sin búfer), a pesar de queNpp_Exec no es una verdadera consola:

    python -u -i $(FULL_CURRENT_PATH)

Esto ejecuta el archivo actual en la consola Npp_Exec en el intérprete de Python y, debido al -icambio, salta directamente al modo interactivo donde luego puede continuar.desde dentro de la consola NppExecpara inspeccionar/utilizar cualquier variable o definición proporcionada por el script.

Si configura su consola Npp_Exec para que siga el directorio actual usando Notepad++ Menu > Plugins > NppExec > Follow $(CURRENT_DIRECTORY, la solución es aún más simple:

    python -u -i $(FILE_NAME)

(Nota: Para Ruby, esta sigue siendo una pregunta abierta, ya que Ruby y su intérprete interactivo irbson dos archivos binarios separados y no parecen tener un interruptor de tipo de inspección junto con algunas otras rarezas al ejecutar scripts que tienen entrada y salida. )

Respuesta3

Soy nuevo en Python y traté de aprender a programar en Python y debido a algunos problemas en IDLE (como la numeración de líneas), decidí usar Notepad++ y, por supuesto,NPP_EXECcomplemento para facilitar la compilación de código. Había tenido éxito en algunos otros como compilar.*.vbsarchivos, pero esta vez para Python no triunfó por alguna razón a pesar de toda la solución presentada aquí y en otros lugares.

Probé primero python -u "$(FULL_CURRENT_PATH)"en NPP_EXEC. Para algunos scripts de Python, el resultado fue satisfactorio y, a medida que aprendí más en Python, encontré un problema nuevamente porque el resultado no fue el que esperaba. Me encontré con la solución aquí por [AKE]. Desafortunadamente, nada de esto me funcionó hasta ahora.

supongamos el siguiente código.

#-------------------------------------------------
mi_dict = dict({'Alicia':1, 'Juan':2, 'Emma':3})
nombre = raw_input("ingrese el nombre: ")
nombre = nombre.capitalizar()

si el nombre está en my_dict:
    #haz algo aquí
else: print("¡El nombre no existe!")
#-------------------------------------------------

Usé ambos:

python -u "$(FULL_CURRENT_PATH)"
y
python -u -i "$(FULL_CURRENT_PATH)"

pero el resultado es siempre el mismo, cualquiera que sea el nombre que ingreses en el código anterior, el resultado siempre será:
[¡El nombre no existe!]

Creo que es por el -ucambio, así que traté de omitirlo y usarlo -icomo

python -i "$(FULL_CURRENT_PATH)"

Resultó funcionar, pero esta vez, después de observar el resultado, debe presionar Ctrl+ Cpara finalizar el proceso manualmente y salir de Python.interactivomodo en la consola NPP_EXEC.

Conozco otras soluciones como usar Notepad++Corrermenú y agregar algunos comandos allí o incluso usarPyNPPcomplemento (aunque estos dos realizan un procedimiento casi idéntico al redirigir Python en cmd), pero ninguno de ellos tenía la conveniencia que me gustaba. Tal vez espero demasiado de NPP_EXEC, porque como tiene en su ayuda no es una consola real, pero quería hacerlo todo en Notepad++ sin tener que lidiar con otros procesos como IDLE o cmd o...

A pesar de esto, agradecería cualquier ayuda si alguien tuviera alguna otra experiencia exitosa.

información relacionada