Python

Table of Contents

1 Install

unix 系だったら大抵最初から入っている.

brew で管理したかったので brew でインストール.

$ brew install python

brew でインストールすると, pip も一緒に入る.

2 virtualenv

python の仮想環境を提供. その機能は,

2.1 Install

$ pip install virtualenv

version: 1.8.2

virtualenvwrapper も入れる.

$ pip install virtualenvwrapper

version: 3.7

virtualenvwrapper は

virtualenvwrapper は virtualenv を使いやすくするツールではあるが、一つ大きな問題がある。 Windows ではそのままでは動かない(インストールは可能)。 virtualenvwrapper は bash スクリプト を使っているため、 Unix 系 OS でしか動かない。 Windows で動かすためには、 Cygwin 等の導入が必要である

今日の Python_ VIRTUALENV について

2.2 How to use

2.2.1 設定

以下を .zshrc と .bashrc に追加

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/share/python/virtualenvwrapper.sh

2.2.2 仮想環境の作成

カレントディレクトリに test という名前の仮想環境を作成.

% virtualenv test
  • -p pathtopythonspecificver: 特定のバージョンの python を使う
  • –no-site-packanges: サードパーティライブラリを含めない

test 環境下に入る.

% workon test
(test)%

抜ける場合は

(test)% deactivate

2.2.3 virtualenv's option completion in zsh

3 IPython

IPython は標準の Python のシェルと比較して, マクロ, 履歴, ログなどさまざまな機能を持ったインタラクティブシェル

3.1 Iinstall

% pip install ipython

4 emacs での開発

emacs での開発について. el-get 前提.

4.1 Completion

jedi を使う.

4.1.1 Install

el-get でインストールするために, virtualenv を入れておく.

% pip install virtualenv
M-x el-get-install jedi

auto-complete は必須. 先に入れておく. el-get で deferred, epc あたりはインストールしないといけないかも.

4.1.2 Setup

(add-hook 'python-mode-hook
      '(lambda ()
         (require 'jedi)
         (jedi:setup)
         (setq jedi:complete-on-dot t)
         (setq jedi:setup-keys t)

         (define-key python-mode-map "\M-h" 'jedi:complete)))

4.1.3 pip でインストールしたライブラリの補完

jedi の virtualenv の方にもインストールすれば補完候補に出るようになる.

% cd ~/.emacs.d/el-get/jedi/env/bin
% source ./activate
(env)% pip install lib-name
(env)% exit

もっと良い方法があるはず…

4.2 Flymake

Eclipse のように, 構文エラーや警告を教えてくれるようにする

4.2.1 pylint

python のコードを Flymake で構文チェックする.

% pip install pylint
(add-hook 'python-mode-hook
      '(lambda ()
         (when (load "flymake" t)
           (defun flymake-pylint-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 "/usr/local/share/python/epylint" (list local-file))))

                (add-to-list 'flymake-allowed-file-name-masks
                             '("\\.py\\'" flymake-pylint-init)))

4.2.2 pep8

pep8 というスタイルになっていない場合警告してくれる

% pip install pep8
(add-hook 'python-mode-hook
      '(lambda ()
         (defun flymake-pep8-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 "/usr/local/share/python/pep8" (list local-file))))

         (add-to-list 'flymake-allowed-file-name-masks
                      '("\\.py\\'" flymake-pep8-init))

4.2.3 pylint と pep8 を合わせて使う(オススメ)

以下のシェルスクリプトを用いる.

#! /bin/bash
# ファイル名: pycheckers

/usr/local/share/python/epylint "$1"
/usr/local/share/python/pep8 --repeat "$1"

true
(add-hook 'python-mode-hook
          '(lambda ()
             (defun flymake-pycheckers-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 "pycheckers" (list local-file))))

             (add-to-list 'flymake-allowed-file-name-masks
                          '("\\.py\\'" flymake-pycheckers-init))

4.3 IPython

pip で IPython はインストールしておく.

M-x el-get-install ipython
(setq ipython-command "/usr/local/share/python/ipython")
(require 'ipython)
(setq-default py-python-command-args '("-cl"))

4.4 Tips

4.4.1 Inferior python

C-c C-c で起動, 実行

4.4.2 Python の対話モードで, タブ押すと補完できるようにする

(define-key inferior-python-mode-map "\t" 'python-complete-symbol)

Created: 2013-06-21 Fri 17:24

Validate XHTML 1.0