背景
色々あって 言語処理100本ノック 2020 (Rev 2) - NLP100 2020 を始めようと思ったが、Python の環境をどうすべきか分かりませんでした。同様に、他の言語から Python に来て迷った人の参考になれば幸いです。
ちなみに普段は Ruby(Rails) と TypeScript(React, Node.js) 、ちょっと Golang を書いているので、その辺りの人に馴染みやすいやり方かもしれません。
動作環境
- macOS Catalina 10.15.7
- anyenv 1.1.1
- pyenv 1.2.26-15-gb1d1ceba
- Python 3.9.4
- VSCode 1.55.2
環境構築
前準備
自分は anyenv 経由で pyenv を入れているので、
anyenv update
pyenv install 3.9.4
pyenv rehash
で Python の最新版を入れます。最新バージョンは Python.org で確認しました。
自分は新しいことを始める前に環境を最新にしていますが、好みの問題かもしれないですね。(そこそこ新しければそのままで良い気もするし、あまりに古ければアップデートした方が良い気もする。)
pipenv を入れる
ライブラリを管理する方法はいくつかあるようですが、仕事で先輩が pipenv を使っていて良さそうだったので、pipenv でやってみました。
cd /path/to/project
pyenv local 3.9.4 # プロジェクト配下の Python バージョンを固定
pip install pipenv
pipenv --python 3.9 # 初期化
Linter とオートフォーマットの設定をする
ググると、flake8 + autopep8 でがイケてそうだったので、その構成にしてみます。flake8 で linting, autopep8 で auto formatting するという風に理解しました。
pipenv install --dev flake8 autopep8
pipenv run autopep8 xxx.py
で実行できるようになったはず。
Python - Visual Studio Marketplace を入れて、ファイル保存時に自動整形されるように設定します。
{
"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true,
"python.linting.lintOnSave": true,
"python.formatting.provider": "autopep8",
"editor.formatOnSave": true,
"editor.tabSize": 4
}
pipenv を使っている場合、virtualenv まわりのパスを設定する必要がある。
virtualenv のパス
は pipenv --venv
で確認できる。
{
"python.venvPath": "{virtualenv のパス}",
"python.pythonPath": "{virtualenv のパス}/bin/python",
"python.autoComplete.extraPaths": [
"{virtualenv のパス}/lib/python3.x/site-packages/"
],
"python.linting.flake8Path": "{virtualenv のパス}/bin/flake8",
"python.formatting.autopep8Path": "{virtualenv のパス}/bin/autopep8"
}
これで .py ファイルの lint エラーも出るし、ファイル保存時に自動整形されるようになったはず。
ついでに推奨拡張機能も設定しておくと、マシンを変えた場合などでも環境を再現しやすくなるので便利です。
{
"recommendations": [
"ms-python.python"
]
}