LoginSignup
8
8

More than 5 years have passed since last update.

40歳から始めるpython

Posted at

もう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
init.el
(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
init.el
(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
init.el
(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
init.el
(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貼るとか使いにくいけど、キーバインド変更じゃなくて体を合わせるべきだよねー。

あと、

init.el
(custom-set-variables '(py-pdb-path 'pdbd))

を書けばミニバッファの入力が少し楽になります。python-mode-hookのlambdaの中に書くといいかな。

とりあえず環境できたー。あ、テスト環境抜けてるか。でもそのまえにまずはpythonの構文覚えるところからですね。。。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8