今からお前んちこいよ

品川にて細々とお勉強。

Sublime Text 3 + pyenv + virtualenv + flake8 で構文チェックの設定

f:id:hakopako03:20170415121217p:plain

忘れそうなのでメモ。
Mac Sierra (10.12.3) を使っている。
システムはPython2.7、アプリケーションはPython3.5で 2バージョンを共存させる。
Sublime Text 3 には Python3.5のflake8での構文チェックを設定する。

Pyenv環境の設定

pyenv, pyenv-virtualenv をインストール

  • Homebrew
$ brew install pyenv
$ brew install pyenv-virtualenv
  • .bash_profile
# setting for pyenv
export PYENV_ROOT="${HOME}/.pyenv"
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
$ source ~/.bash_profile
$ pyenv version
system (set by /Users/XXX/.pyenv/version)

これでディレクトリ毎にPythonのバージョンを切り分ける仕組みの設定完了。

python3.5の仮想環境を作る

$ pyenv install 3.5.2
$ pyenv virtualenv 3.5.2 python3
$ pyenv versions
* system (set by /Users/XXX/.pyenv/version) 
  3.5.2
  3.5.2/envs/python3
  python3
  • ディレクトリにPython3を適応させる
$ mkdir python-test
$ cd python-test/
$ pyenv local python3
(python3) $ python -V
Python 3.5.2

() でカレントディレクトリに適応されているPythonのバージョンが表示される。   python-test ディレクトリ内は、 python3環境が適応されているのがわかる。

python3.5の仮想環境にflake8をインストール

  • pip でインストール
$ cd python-test/
(python3) $ pip -V
pip 8.1.1 from /Users/XXX/.pyenv/versions/3.5.2/envs/python3/lib/python3.5/site-packages (python 3.5)
(python3) $ pip install flake8
(python3) $ flake8 --version
3.3.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.5.0) CPython 3.5.2 on Darwin

python3環境でpipを実行し、python3環境にパッケージをインストールする。
これでマシン側での構文チェックコマンドが整った。
ちなみにコマンドラインで構文チェックをする場合は、
$ flake8 hogehoge.py とかで実行できる。

次はSublime Text 3 側の設定。

Sublime Text 3 の準備

  • Sublime Text 3のインストールは省略
  • Package Controlのインストールも省略
  • インストールしたパッケージは、
    • SublimeLinter
    • SublimeLinter-flake8

SublimeLinterの設定

Preferences > Package Settings > SublimeLinter > Setting - User

"paths": {
    "linux": [],
    "osx": [
        "/Users/XXX/.pyenv/versions/python3/bin/"
    ],
    "windows": []
},

Sublime Text 3 を再起動して終わり。

SublimeLinterのデバックモード

Tools > SublimeLinter > Debug Mode にチェック。
そうするとデバッグログを出してくれるので、
Sublime Text 3 で cmd + ` でコンソールを開けば動かない時などいろいろヒントになる。

そんなこんなで、できた画面が以下の通り。
ちなみにデバックログを出すとどのラインがどんなルールに従っていないのか一覧ででる。

f:id:hakopako03:20170415122015p:plain

 

おわり。