La salida del bloque fuente del modo org de Python siempre es ': Ninguno'


15

Este es mi bloque fuente:

#+BEGIN_SRC python
print "hello"
#+END_SRC

La salida es siempre:

#+RESULTS:
: None

Esta es mi configuración org-babel:

    (org-babel-do-load-languages
 'org-babel-load-languages
 '((python . t)
   (C . t)
   (calc . t)
   (latex . t)
   (java . t)
   (ruby . t)
   (scheme . t)
   (sh . t)
   (sqlite . t)
   (js . t)))

Python está en mi RUTA y es ejecutable a través de la terminal.

Los bloques Emacs-lisp SRC funcionan bien.

¿Por qué me sale en Nonelugar de hello?

Respuestas:


16

Esta es una peculiaridad de cómo Babel maneja algunos idiomas. Esto proporciona algunos detalles sobre Python, y una lista completa de opciones está disponible aquí . Hay bastantes útiles.

Básicamente, dependiendo del idioma, hay varias opciones de salida. A veces tiene sentido usar la salida estándar (lo que printhace), para otros idiomas (por ejemplo, octava), tiene sentido mostrar una imagen. Para python, el valor predeterminado es value, que muestra el valor de retorno del código, por lo que cambiar su declaración de impresión a una devolución proporcionaría el comportamiento esperado.

Esto no es muy útil en algunos casos, por lo que se puede cambiar agregando :results outputa la primera línea del bloque fuente.


14

En un caso muy simple como este, hay un truco que suelo usar, reemplazar printcon return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Pero, en general, la mejor solución será usar :results output, como lo menciona el usuario 2699.

#+BEGIN_SRC python :results output
print("hello")
#+END_SRC

#+RESULTS:
: hello

2
Esto no es un truco. :)
Omar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.