もう41歳ですが、1歳くらいは気にしない。
今からでも定年までは20年あるので遅くはないはず。ということで、python始めます。
#対象者
python初心者
#環境
ubuntu16.04 + python3.6.1 + emacs24.5.1
#Python インストール
このへんを参考にpyenvを導入してインストール。
#emacs環境構築
##python-mode
これが無いと始まらない。
$ cd ~/.emacs.d
$ git clone https://github.com/python-mode/python-mode.git
(add-to-list 'load-path "~/.emacs.d/python-mode")
(require 'python-mode)
(setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist))
(add-hook 'python-mode-hook
'(lambda ()
(setq indent-tabs-mode nil)
(setq python-indent 4)
(setq tab-width 4)))
autopep8
自動で整形してくれるautopep8を導入。変なコーディングスタイルになる前に自動で矯正!
$ cd ~/.emacs.d
$ git clone https://github.com/paetzke/py-autopep8.el.git
(add-to-list 'load-path "~/.emacs.d/py-autopep8.el")
(require 'py-autopep8)
(define-key python-mode-map (kbd "C-c F") 'py-autopep8)
(define-key python-mode-map (kbd "C-c f") 'py-autopep8-region)
(add-hook 'before-save-hook 'py-autopep8-before-save)
pyflakes
構文チェックしてエラーを教えてくれる。うん、これは便利。
$ pip3 install pyflakes
(add-hook 'find-file-hook 'flymake-find-file-hook)
(when (load "flymake" t)
(defun flymake-pyflakes-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "~/.pyenv/shims/pyflakes" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pyflakes-init)))
(defun flymake-show-help ()
(when (get-char-property (point) 'flymake-overlay)
(let ((help (get-char-property (point) 'help-echo)))
(if help (message "%s" help)))))
(add-hook 'post-command-hook 'flymake-show-help)
(custom-set-faces
'(flymake-errline ((((class color)) (:background "red")))))
##yasnippet
自動挿入ですね。あると便利。
$ cd ~/.emacs.d
$ git clone --recursive https://github.com/joaotavora/yasnippet
(add-to-list 'load-path "~/.emacs.d/yasnippet")
(require 'yasnippet)
(setq yas-snippet-dirs
'("~/.emacs.d/yasnippet/mysnippets"
"~/.emacs.d/yasnippet/snippets"))
(define-key yas-minor-mode-map (kbd "C-x i i") 'yas-insert-snippet)
(define-key yas-minor-mode-map (kbd "C-x i n") 'yas-new-snippet)
(define-key yas-minor-mode-map (kbd "C-x i v") 'yas-visit-snippet-file)
(yas-global-mode 1)
##pdb
下記ファイルを作って保存。
#!/bin/sh
exec python ~/.pyenv/versions/3.6.1/lib/python3.6/pdb.py "$@"
どこに置いてもいいですが、できればpathの通ってるところに
emacsでデバッグ対象ファイル(例:debug.py)を開いた状態で
$ emacs debug.py
(emacs上で) M-x pdb
(ミニバッファ) pdbd debug.py
emacs24だとbreak貼ったりするコマンドが変更になっている模様。このあたりを参考に。
C-x C-a C-bでbreak貼るとか使いにくいけど、キーバインド変更じゃなくて体を合わせるべきだよねー。
あと、
(custom-set-variables '(py-pdb-path 'pdbd))
を書けばミニバッファの入力が少し楽になります。python-mode-hookのlambdaの中に書くといいかな。
とりあえず環境できたー。あ、テスト環境抜けてるか。でもそのまえにまずはpythonの構文覚えるところからですね。。。