Output blok sumber mode python org-mode selalu ': Tidak Ada'

15

Ini adalah blok sumber saya:

#+BEGIN_SRC python
print "hello"
#+END_SRC

Output selalu:

#+RESULTS:
: None

Ini adalah konfigurasi org-babel saya:

    (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 ada di PATH saya dan dapat dieksekusi melalui terminal.

Blok SRC Emacs-lisp berfungsi dengan baik.

Kenapa saya harus Noneganti hello?

Pikiran kosong
sumber

Jawaban:

16

Ini adalah kekhasan bagaimana babel menangani beberapa bahasa. Ini memberikan beberapa detail tentang python, dan daftar opsi lengkap tersedia di sini . Ada beberapa yang bermanfaat.

Pada dasarnya, tergantung pada bahasanya, ada beberapa opsi untuk output. Terkadang masuk akal untuk menggunakan output standar (apa printartinya), untuk bahasa lain (misalnya oktaf), masuk akal untuk menampilkan gambar. Untuk python, defaultnya adalah value, yang menunjukkan nilai kembali kode, jadi mengubah pernyataan cetak Anda menjadi kembali akan memberikan perilaku yang diharapkan.

Ini tidak terlalu berguna dalam beberapa kasus, sehingga dapat diubah dengan menambahkan :results outputbaris pertama dari blok sumber.

pengguna2699
sumber
14

Dalam kasus yang sangat sederhana seperti ini, ada peretasan yang cenderung saya gunakan, ganti printdengan return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Tetapi secara umum solusi yang lebih baik adalah menggunakan :results output, seperti yang disebutkan oleh user2699.

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

#+RESULTS:
: hello
Brian Z
sumber
2
Ini bukan hack. :)
Omar