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?

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.


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

2
Dies ist kein Hack. :)
Omar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.