Python組織モードのソースブロックの出力は常に「:なし」です


15

これは私のソースブロックです。

#+BEGIN_SRC python
print "hello"
#+END_SRC

出力は常に:

#+RESULTS:
: None

これは私の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は私のPATH上にあり、ターミナル経由で実行可能です。

Emacs-lisp SRCブロックは問題なく動作します。

なぜNone代わりに取得するのhelloですか?

回答:


16

これは、babelが一部の言語を処理する方法の特性です。 これにより、Pythonの詳細が提供されます。オプションの完全なリストについては、こちらをご覧ください。かなり便利なものがあります。

基本的に、言語に応じて、出力にはいくつかのオプションがあります。print他の言語(たとえば、オクターブ)で標準出力を使用するのが理にかなっている場合があります(機能します)。画像を表示するのが理にかなっています。pythonの場合、デフォルトはvalueであり、コードの戻り値を表示します。したがって、printステートメントをreturnに変更すると、期待される動作が得られます。

これは場合によってはあまり有用ではないため:results output、ソースブロックの最初の行に追加することで変更できます。


14

このような非常に単純なケースでは、私が使用する傾向がハック、置き換えがありますprintとはreturn

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

しかし、一般的には:results output、user2699で述べられているように、より良い解決策を使用することです。

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

#+RESULTS:
: hello

2
これはハックではありません。:)
オマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.