La sortie du bloc source en mode org Python est toujours ': Aucun'

15

Ceci est mon bloc source:

#+BEGIN_SRC python
print "hello"
#+END_SRC

La sortie est toujours:

#+RESULTS:
: None

Voici ma configuration 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 sur mon PATH et exécutable via le terminal.

Les blocs SRC Emacs-lisp fonctionnent très bien.

Pourquoi est-ce que je reçois à la Noneplace de hello?

Un esprit vide
la source

Réponses:

16

C'est une particularité de la façon dont babel gère certaines langues. Cela donne quelques détails sur python, et une liste complète des options est disponible ici . Il y en a plusieurs utiles.

Fondamentalement, selon la langue, il existe plusieurs options de sortie. Parfois, il est logique d'utiliser la sortie standard (qu'est print- ce qui le fait), pour d'autres langues (par exemple l'octave), il est logique d'afficher une image. Pour python, la valeur par défaut est value, qui montre la valeur de retour du code, donc changer votre instruction print en retour donnerait le comportement attendu.

Ce n'est pas très utile dans certains cas, il peut donc être modifié en ajoutant :results outputà la première ligne du bloc source.

user2699
la source
14

Dans un cas très simple comme celui-ci, il y a un hack que j'ai tendance à utiliser, remplacez-le printpar return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Mais en général, la meilleure solution sera d'utiliser :results output, comme mentionné par user2699.

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

#+RESULTS:
: hello
Brian Z
la source
2
Ce n'est pas un hack. :)
Omar