emacs org-mode の中で快適に python を操る。
python に愛がなくなって久しいけど、プログラマにとっての lingua franca は python なので他のプログラマとのコミュニケーションとしてどうしても必要。
みんなは jupyter を使うけど、それだと他のメモとか論文とかプログラムと離れてしまう。
https://github.com/doomemacs/doomemacs/issues/2416#issuecomment-577944200
まず、 venv
をつくり、入れたいライブラリーを pip する。
python3 -m venv ~/venv/default . ~/venv/default/bin/activate pip install numpy pip install pandas pip install matplotlib
ここで、elisp で、どの python
を使うか emacs に教えてあげる。
(setq org-babel-python-command "~/venv/default/bin/python")
~/venv/default/bin/python
ちなみに、この ~/venv/default/bin/python
を ls で見ると、symlink なので、まさかいつも python をコピーしているわけではないから、安心して ok。
上の venv
を毎回つくるのが面倒だと思うので、デフォルトでこの default
venv を Doom Emacs config で設定した。でもいつも作る癖があるといいかもね。何も想定する必要がなくなるから。
import numpy as np x = np.arange(3) y = np.array([0.5, 0.1, 1.9])
とすることで、同じ session の中での計算が引き継がれる、jupyter 的なので実行はウォーターフォールなので、実行順は要注意なのかな。
y
このために、mac 側の rsync を brew で更新した。上にも書いたように再現性を担保したいのなら、
:tangle file_path
でできたスクリプトの書き出し先を設定できる。
# import matplotlib.pyplot as plt # # fig, ax = plt.subplots() # ax.bar(x,y) path = '~/notes/images/python/test.png' # plt.savefig(path) import matplotlib.pyplot as plt fig, ax = plt.subplots() fruits = ['apple', 'blueberry', 'cherry', 'orange'] counts = [40, 100, 30, 55] bar_labels = ['red', 'blue', '_red', 'orange'] bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange'] ax.bar(fruits, counts, label=bar_labels, color=bar_colors) ax.set_ylabel('fruit supply') ax.set_title('Fruit supply by kind and color') ax.legend(title='Fruit color') plt.savefig(path) print("hi")