おすすめのPythonの環境構築まとめ
おすすめのPythonの環境構築まとめ
個人的に普段はTypeScriptやKotlinを書く機会が多いのですが、バッチ処理などではPythonを採用することが多いです。
久しぶりにPythonを書くと環境構築はどうするのが良いんだっけと、いつも思ってしまうのでここにまとめます。
OSはmacOS、エディタについてはVSCodeを使用することとします。
使用するツールなど
- Pythonバージョン切り替え
- pyenv
- パッケージ管理ツール
- poetry
Pythonではpipやpipenvなど様々なパッケージ管理ツールがありましたが、現在はpoetry以外を使う選択肢は基本的にないと思います。
pipやpipenvとの比較はここでは省略します。
- Linter
- flake8
Linterはflake8かpylintが有名ですが、最近はflake8が多く使われているようなのでこちらを採用します。
- Formatter
- black
PEP8に準拠しているフォーマッタ。自由に設定できる項目が少ないのが特徴です。
設定できる項目が少ないことは、裏を返せば細かい設定が不要ということでもあります。
今のところフォーマットに特に不満はないので、こちらを採用します。
導入手順
pyenv のインストール
私はpyenvの他にもrbenvなどを使う機会も多いので、anyenvでpyenvを導入します。
anyenvは**envをまとめて管理できるツールです。
導入方法は下記リポジトリのREADMEの通りなので省略します。
poetry のインストール
homebrewからpoetryをインストールします。
brew install poetry
プロジェクトの作成
poetryのコマンドから新しいプロジェクトを作成します。
poetry new python-my-project
以下のような構成でファイルが作成されます。
READMEはrst形式で生成されるため、好みに応じてMarkdownに直します。
python-my-project
├── pyproject.toml
├── README.rst
├── python_my_project
│ └── __init__.py
└── tests
├── __init__.py
└── test_python_my_project.py
Python バージョンの指定
pyenvを使用してPythonのバージョンを指定します。今回は3.9.7を使用します。
プロジェクトのルートディレクトリに移動し、pyenvで使用するバージョンを指定します。
cd python-my-project
pyenv local 3.9.7
このプロジェクトではpyenvでインストールした3.9.7が使用されるようになりました。
また、 pyproject.toml
には poetry new
した際のPythonバージョンが指定されています。
使用しているPythonのバージョンと異なるとエラーが発生するため、必要に合わせてバージョンを書き換えてください。
[tool.poetry.dependencies]
python = "^3.9.7"
仮想環境の作成
poetry install
を実行すれば仮想環境が作成されます。
しかし、このままだと以下のようなディレクトリに作成されます。
/Users/yuki-furukawa/Library/Caches/pypoetry/virtualenvs/python-my-project-64lWWP9p-py3.9
仮想環境はルートディレクトリ以下に作成されるようにすると、VSCodeから仮想環境を利用でき便利なので設定を変更します。
グローバルに設定したいときはこのコマンドで設定します。
poetry config virtualenvs.in-project true
プロジェクト単位で設定したい場合は --local
を付けます。
poetry config --local virtualenvs.in-project true
今回はプロジェクト単位で設定することとします。
プロジェクト単位で設定した場合は、以下のような設定ファイルが作成されます。
[virtualenvs]
in-project = true
この状態で poetry install
をするとルートディレクトリ以下に .venv
というディレクトリで仮想環境が作成されます。
flake8 と black のインストール
poetryを使ってflake8とblackをインストールします。
poetry add -D flake8 black
dev-dependenciesとして追加するため、 -D
オプションを使います。
VSCode の設定
予めPythonの拡張機能をインストールしておきます。
仮想環境の設定
ステータスバーを確認すると、poetryから作成した仮想環境が自動的に読み込まれています。
もし他のインタープリターが選択されている場合は、ステータスバーをクリックすると選択し直すことができます。
VSCode上で仮想環境を正しく認識できていると、ターミナルを開くと認識している仮想環境を自動的に読み込んでくれます。
この状態でPythonコマンドを使用すれば、仮想環境で実行することができます。
flake8の設定
Command + Shift + P
でコマンドパレットを開き、 Python: Select Linter
を選択し、 flake8
を選択します。
blackの設定
設定から python.formatting.provider
の値をblackに変更します。
コマンドパレットから手動でフォーマットも出来ますが、 editor.formatOnSave
を true
に変更し、保存時に自動でフォーマットするのもおすすめです。
実際に使ってみる
flake8とblackの動作確認
このようなファイルを作成し、保存してみます。
import sys
hoge = [
'first','second'
,'third' ]
print(hoge)
保存時に自動的にblackでフォーマットし、flake8によるチェックも行われるようになりました。
Pythonの実行
右上の実行ボタンを押すだけです。
ターミナルから実行する場合は仮想環境が読み込まれているため、以下のコマンドで実行可能です。
$ python python_my_project/main.py
# ['first', 'second', 'third']
仮想環境が読み込まれていない場合は poetry run
経由で実行します。
$ poetry run python python_my_project/main.py
# ['first', 'second', 'third']
おわりに
毎回環境構築で時間が取られるのがもったいないと感じ、自分が見返すようにまとめました。
他に何かおすすめの設定などがあれば教えてください。
Discussion