Die Ausgabe des Python-Org-Modus-Quellblocks lautet immer ": Keine".

15

Dies ist mein Quellblock:

#+BEGIN_SRC python
print "hello"
#+END_SRC

Die Ausgabe ist immer:

#+RESULTS:
: None

Dies ist meine Org-Babel-Konfiguration:

    (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 befindet sich auf meinem Pfad und kann über das Terminal ausgeführt werden.

Emacs-lisp-SRC-Blöcke funktionieren einwandfrei.

Warum bekomme ich Nonestatt hello?

Empty_Mind
quelle

Antworten:

16

Dies ist eine Besonderheit, wie babel mit einigen Sprachen umgeht. Dies enthält einige Details zu Python. Eine vollständige Liste der Optionen finden Sie hier . Es gibt einige nützliche.

Grundsätzlich gibt es je nach Sprache mehrere Möglichkeiten zur Ausgabe. Manchmal ist es sinnvoll, die Standardausgabe zu verwenden (was printtut das), für andere Sprachen (z. B. Oktave) ist es sinnvoll, ein Bild anzuzeigen. Bei Python ist der Standardwert valueder Rückgabewert des Codes. Wenn Sie also Ihre print-Anweisung in eine return-Anweisung ändern, wird das erwartete Verhalten erzielt.

Dies ist in einigen Fällen nicht sehr nützlich. Sie können es also ändern, indem Sie es :results outputin die erste Zeile des Quellblocks einfügen.

user2699
quelle
14

In einem sehr einfachen Fall wie diesem gibt es einen Hack, den ich eher benutze. Ersetze ihn printdurch return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Aber im Allgemeinen wird die bessere Lösung sein :results output, wie von user2699 erwähnt.

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

#+RESULTS:
: hello
Brian Z
quelle
2
Dies ist kein Hack. :)
Omar