Đầu ra khối nguồn chế độ org của Python luôn là ': Không'


15

Đây là khối nguồn của tôi:

#+BEGIN_SRC python
print "hello"
#+END_SRC

Đầu ra luôn là:

#+RESULTS:
: None

Đây là cấu hình org-babel của tôi:

    (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 nằm trên PATH của tôi và có thể thực thi được thông qua terminal.

Các khối SRC Emacs-lisp hoạt động tốt.

Tại sao tôi nhận được Nonethay vì hello?

Câu trả lời:


16

Đây là một đặc thù của cách babel xử lý một số ngôn ngữ. Điều này cung cấp một số chi tiết về python và một danh sách đầy đủ các tùy chọn có sẵn ở đây . Có khá nhiều cái hữu ích.

Về cơ bản, tùy thuộc vào ngôn ngữ, có một số tùy chọn cho đầu ra. Đôi khi nó có ý nghĩa để sử dụng đầu ra tiêu chuẩn (cái gì print), đối với các ngôn ngữ khác (ví dụ như quãng tám), nó có ý nghĩa để hiển thị một hình ảnh. Đối với python, mặc định là value, hiển thị giá trị trả về của mã, do đó, việc thay đổi câu lệnh in của bạn thành trả về sẽ mang lại hành vi mong đợi.

Điều này không hữu ích trong một số trường hợp, vì vậy nó có thể được thay đổi bằng cách thêm :results outputvào dòng đầu tiên của khối nguồn.


14

Trong một trường hợp rất đơn giản như thế này, có một hack tôi có xu hướng sử dụng, thay thế printbằng return:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

Nhưng nói chung, giải pháp tốt hơn sẽ là sử dụng :results output, như được đề cập bởi user2699.

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

#+RESULTS:
: hello

2
Đây không phải là một hack. :)
Omar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.