emacsでpythonを書く設定
Table of Contents
ホストWindows10Home, Virtualbox上のゲストUbuntu20.04に emacs26.3を入れてリント、pdb、jupyter notebookを使うまでに行った設定の備忘録 基本的に参考にしたサイトを書いていって、自分の環境で行ったことをここでコメントする。
Ubuntuの設定
https://qiita.com/pyon_kiti_jp/items/0be8ac17439abf418e48 を参考にUbuntuのvirtual machineを作成。
キーボードをUS配列(HHKB)で使いたいので、キーボード設定を更変 https://qiita.com/khsk/items/deb798c457d7888e1714 https://magidropack.hatenablog.com/entry/2019/01/05/174048 日本語キーボードを消して、入力ソースを英語(US)のみに変更 日本語キーボードも使いたくなったら追加する。
emacsのインストール
最新版のemacs26.3を入れたかったので調べたら、GUIでUnuntu Sofrwareでできるとのことだった。 http://ubuntuhandbook.org/index.php/2019/08/gnu-emacs-26-3-released-how-to-install-it-in-ubuntu-18-04/
完成したinit.el
完成版はhttps://github.com/RyotoYamashita/dot.emacs.d/blob/master/.emacs.d/init.el にあります。 注意点としてjupyterで生成した図がインラインで表示されず、 init.el以外の設定を行いました。 これについては記事の下方で述べます。
日本語環境の構築
そのままのemacsの日本語モードはストレスフルである。 例えば、「めりっと」を変換すると「減りっと」にしか変換できない。 そこでmozcを入れた。 https://qiita.com/Maizu/items/fee34328f559c7dc59d8 ターミナルで
$ sudo apt-get install emacs-mozc-bin
WSLの場合、
[https://ahiru8usagi.hatenablog.com/entry/WSL_GUIApps_Japanese:title]
を参考に日本語フォントをインストール
$ sudo apt-get install fonts-ipafont
その後、 ~/.emacs.d/init.el に以下のように書き込んで、emacsを再起動。
;;; package.el
(require 'package)
;; MELPAを追加
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;; MELPA-stableを追加
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
;; Marmaladeを追加
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
;; Orgを追加
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
;; 初期化
(package-initialize)
(defvar myPackages
'(better-defaults ;; Set up some better Emacs defaults
mozc
material-theme ;; Theme
)
)
;; Scans the list in myPackages
;; If the package listed is not already installed, install it
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;;; mozc
(set-language-environment "Japanese") ; 言語環境を"japanese"に
(setq default-input-method "japanese-mozc") ; IMEをjapanes-mozcに
(prefer-coding-system 'utf-8) ; デフォルトの文字コードをUTF-8に
(global-set-key (kbd "C-o") 'toggle-input-method)
これで良い感じの変換を行ってくれる。 C-oで日本語英語切り替えをする。
エラーが出たら、M-x package-refresh-contents
を行った後、emacsを再起動
pythonの設定
elpyというライブラリを入れておけばあらゆるpython機能が使えるらしい。 基本的に、https://realpython.com/emacs-the-best-python-editor/ この神記事を参考にした。 一部設定をこちらでしないといけないことがあるので、 それについて記しておく。
python仮想環境
elpyはpython仮想環境を必要とするらしい。 そのため今回はpython標準でできるvenvを使った。 ターミナルで以下のように記述すると、仮想環境を作って起動できる。
$ python3 -m venv ./test $ source test/bin/activate (test)$
この仮想環境を起動した状態でemacsを起動すると、elpyが使える。
必要なライブラリのインストール
blackとjupyterをpipでインストールした。
black を動作させる
blackという保存するたびにリントを効かせるプログラムがあるがこれを動作させるには、 init.elに以下の設定が必要であった。
;; Enable autopep8
(require 'py-autopep8)
(add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save)
;; 以下の行の追加が必要
(add-hook 'after-save-hook 'elpy-black-fix-code)
jupyter notebook で図をemacs上で開く
図がemacsで表示されずfirefoxで表示されてしまう。 いろいろ調べていたらやり方がein公式に書いてあった。
https://github.com/millejoh/emacs-ipython-notebook
display images inline? We find inserting images into emacs disruptive, and so default to spawning an external viewer. To override this,
M-x customize-group RET ein Ein:Output Area Inlined Images
pdbを起動するための設定
(setq gud-pdb-command-name "python3 -m pdb") をinit.elに追加。
以上です
emacsでjupyterができるとは感動です。 現状の不満はelpyによるformattingが pythonファイル以外のファイルの保存のときに動作してしまうことです。