L'output del blocco sorgente in modalità org di Python è sempre ": Nessuno"


15

Questo è il mio blocco sorgente:

#+BEGIN_SRC python
print "hello"
#+END_SRC

L'output è sempre:

#+RESULTS:
: None

Questa è la mia configurazione 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 è sul mio PERCORSO ed eseguibile tramite terminale.

I blocchi SRC di Emacs-lisp funzionano perfettamente.

Perché ottengo Noneinvece di hello?

Risposte:


16

Questa è una peculiarità di come Babel gestisce alcune lingue. Ciò fornisce alcuni dettagli su Python e un elenco completo di opzioni è disponibile qui . Ce ne sono alcuni utili.

Fondamentalmente, a seconda della lingua, ci sono diverse opzioni per l'output. A volte ha senso usare l'output standard (cosa printfa), per altre lingue (es. Ottava), ha senso visualizzare un'immagine. Per python, l'impostazione predefinita è value, che mostra il valore restituito dal codice, quindi la modifica dell'istruzione di stampa in un ritorno darebbe il comportamento previsto.

Questo non è molto utile in alcuni casi, quindi può essere modificato aggiungendo :results outputalla prima riga del blocco sorgente.


14

In un caso molto semplice come questo, c'è un trucco che tendo a usare, sostituendolo printcon return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Ma in generale la soluzione migliore sarà usare :results output, come menzionato dall'utente 2699.

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

#+RESULTS:
: hello

2
Questo non è un trucco. :)
Omar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.