nogawaparkのブログ

書く練習。

emacsでpythonを書く設定

Table of Contents

  1. emacsでpythonを書く設定
    1. Ubuntuの設定
    2. emacsのインストール
    3. 完成したinit.el
    4. 日本語環境の構築
    5. pythonの設定
      1. python仮想環境
      2. 必要なライブラリのインストール
      3. black を動作させる
      4. jupyter notebook で図をemacs上で開く
      5. pdbを起動するための設定
    6. 以上です

ホスト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ファイル以外のファイルの保存のときに動作してしまうことです。