Pregunta:
¿Es posible tener, en el mismo archivo de organización, dos bloques de código en el mismo idioma que se ejecutan en diferentes intérpretes especificando diferentes opciones en la parte superior del bloque de código?
Respuesta:
La pregunta original ha sido modificada para referirse a la ejecución de múltiples versiones de un ejecutable, y no simplemente a intérpretes independientes.
Usando find-library
, inspeccioné la fuente de ob-ruby
, que incluye este código:
(defvar org-babel-ruby-command "ruby"
"Name of command to use for executing ruby code.")
He visto referencias en otros lugares para python usando org-babel-python-command
, por lo que existe en algunos otros idiomas, verifique el soporte de ob-$lang
apropiado para ver.
Esto permite que funcione lo siguiente:
#+begin_src emacs-lisp :results none
(setq org-babel-python-command "python3")
#+end_src
#+begin_src python :results output
import sys
print(sys.version)
#+end_src
#+RESULTS:
: 3.4.0 (default, Apr 11 2014, 13:05:11)
: [GCC 4.8.2]
#+begin_src emacs-lisp :results none
(setq org-babel-python-command "python2")
#+end_src
#+begin_src python :results output
import sys
print(sys.version)
#+end_src
#+RESULTS:
: 2.7.6 (default, Mar 22 2014, 22:59:56)
: [GCC 4.8.2]
Esto podría combinarse con :session python3
y :session python2
para evitar llamar a elisp antes de cada bloque. Sin embargo, parece que debería haber una forma más sencilla de hacer esto.