poetry
で作成した仮想環境を org-mode のコードブロックで使うことを考える。仮想環境は $HOME/repos/ks_python_env
に作成されているとする。
コードブロックのデフォルトのHeaderを定義しておく。セッション名とファイルが存在するフォルダパスをどのコードブロックでも共通して使用するようにしている。
#+PROPERTY: header-args:python :session (concat "*python* - " (buffer-file-name)) #+PROPERTY: header-args:python+ :var cur_dir=(identity default-directory) #+PROPERTY: header-args:python+ :eval no-export
poetry コマンドの機能を利用して、仮想環境の python のパスを org-babel-python-command
に設定する。
#+begin_src elisp :dir ~/repos/ks_python_env :exports none (let* ((env_path (s-trim (shell-command-to-string "poetry env info -p"))) (python_path (f-join env_path "bin/python"))) (setq-local org-babel-python-command python_path)) #+end_src
上記を実行すれば、下記のように仮想環境のPythonが実行される。
#+begin_src python :results output :exports both import sys print(sys.version) #+end_src
import sys print(sys.version)
3.8.12 (default, May 6 2022, 13:18:25) [GCC 11.2.0]