PoetryでVSCode向けのPython開発環境を再構築した
Posted Dec 21, 2023 | Updated Dec 21, 2023
数年ぶりにApple SiliconのMacBook Proを使用し、VSCodeを使うPythonの開発環境を構築しました。この記事では、HomebrewのインストールからPoetryを用いたプロジェクト作成、Pythonバージョンの確認、開発ツールの設定までの一連のプロセスを忘れないようメモにしておきます。
前提
- Apple SilliconのMacBook Pro(M1 Pro)を使う
- 各種ソフトウェアのインストールにはHomebrewを使う
- Pythonの依存関係管理にはPoetryを使う
- エディタはVSCodeを使う
この記事は@nuco_kjmさんの2022年度版Python環境構築徹底解説を参考に、自分用にカスタマイズしています。ぜひ上記@nuco_kjmさんの記事も読んでみてください。
ステップ
- Homebrewをインストール
- Homebrewでpoetryをインストール
- poetryでプロジェクトを作成
- Pythonのバージョンを確認・変更
- 開発用ツールをインストール
- VSCodeの設定
- pre-commitの設定
1. Homebrewをインストール
Mac用のパッケージマネージャーであるHomebrewをインストールします。HomebrewはMacでプログラミングをする際に必要なソフトウェアを簡単にインストールできるソフトウェアです。
Macでターミナルを開いて、以下のコマンドを実行します。MacのターミナルはLaunchpadの中の「その他」から起動できます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ターミナルに入力できるようになったら以下のコマンドでHomebrewがインストールされたか確認します。
# コマンド
brew --version
# 表示
Homebrew 4.2.0
うまくいかない場合には、必ずHomebrewのWebサイトを確認してください。
2. HomebrewでPoetryをインストール
次にPoetryというツールを以下のコマンドを実行してインストールします。
brew install poetry
ターミナルに入力できるようになったら以下のコマンドでインストールできたか確認します。
# コマンド
poetry -V
# 表示
Poetry (version 1.7.1)
プロジェクトフォルダ内にPythonの環境を作る場合には以下のコマンドを実行します。これはPoetryでプロジェクトを作成する際にプロジェクト間でPythonの実行環境を共有しないようにするためです。これを実行するとプロジェクトフォルダ内に.venvが作成され、その中にPoetryで設定したバージョンのPython実行環境が作成されます。
# コマンド
poetry config virtualenvs.in-project true
3. Poetryでプロジェクトを作成
次に以下のコマンドでPoetryでの管理を有効にしたプロジェクト(フォルダ)を作成します。
# コマンド
poetry new poetry-3
# 表示
Created package poetry_3 in poetry-3
4. Pythonのバージョンを確認・インストール
以下のコマンドで作成されたフォルダの中を確認します。
# コマンド
find poetry-3 | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
# 表示
poetry-3
|-pyproject.toml
|-poetry_3
| |-__init__.py
|-tests
| |-__init__.py
|-README.md
pyproject.tomlがプロジェクトの情報、使用するライブラリを管理する設定ファイルです。poetry_3フォルダがソースコードを格納するフォルダ、testsがpytestなどのテストプログラムを入れるフォルダ、READMI.mdはプロジェクトのドキュメントでしょうか。
pyproject.tomlを開いて、[tool.poetry.dependencies]のpythonの項目を確認します。2023年12月21日に確認した際には以下のように3.12が初期設定されています。必要に応じて以下の「3.12」の箇所を利用したいPythonのバージョンに合わせて変更し、保存します。
[tool.poetry.dependencies]
python = "^3.12"
次にプロジェクトフォルダにPython環境を構築します。「2. HomebrewでPoetryをインストール」で「poetry config virtualenvs.in-project true」を実行したので、プロジェクトフォルダに個別にPythonの実行環境をインストールする必要があります。
poetry-3 ← ここのフォルダで実行
|-pyproject.toml
|-poetry_3
| |-__init__.py
|-tests
| |-__init__.py
|-README.md
# コマンド
poetry install
# 表示
Creating virtualenv poetry-3 in /Users/smoriya/poetry-3/.venv
Updating dependencies
Resolving dependencies... (0.1s)
Writing lock file
Installing the current project: poetry-3 (0.1.0)
これでプロジェクトの特定のバージョン、今回はPython3.12.xでの実行環境がインストールできました。
5. 開発用ツールをインストール
次に開発用のツールをインストールします。それぞれのツールが何者なのかは、@nuco_kjmさんが2022年度版Python環境構築徹底解説で説明してくれていますので、そちらを読んでください。
poetry-3 ← ここのフォルダで実行
|-pyproject.toml
|-poetry_3
| |-__init__.py
|-tests
| |-__init__.py
|-README.md
# コマンド
poetry add -D flake8 black isort pytest pre-commit
# (表示は省略)
pyproject.tomlを開くと[tool.poetry.group.dev.dependencies]の項目にインストールしたツールとそのバージョンが追加されています。
[tool.poetry.group.dev.dependencies]
flake8 = "^6.1.0"
black = "^23.12.0"
isort = "^5.13.2"
pytest = "^7.4.3"
pre-commit = "^3.6.0"
6. VSCodeの設定
インストールした開発用ツールをVSCodeから使うための設定を実施します。VSCodeを開くとエラーやアドバイスなどが表示されるかもしれませんが、とりあえず無視しました。
まず、以下のVSCodeの拡張機能をインストールしていきます。
- Python (Microsoft)
- Pylace (Microsoft)
- Flake8 (Microsoft)
- Black Formatter (Microsoft)
- isort (Microsoft)
次に拡張機能の設定を反映します。Macの場合、「Command+Shift+P」でコマンドパレットを開き、「Open User Settings (JSON)」と入力して表示されたメニューをクリックします。ファイルが開くのでそこに以下の内容を貼り付けて保存します。設定の内容は少し自信がないのですが、以下のことを意図したつもりです。
- 開いたプロジェクト(フォルダ)からimportする
- Pythonの実行環境は開いたプロジェクト(フォルダ)の.venv以下のものを使う
- ファイル保存時に自動でフォーマットをかける
- エラーが発生したら通知する
{
"editor.formatOnSave": true,
"python.terminal.activateEnvInCurrentTerminal": true,
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"workbench.settings.applyToAllProfiles": [
"flake8.importStrategy"
],
"flake8.importStrategy": "fromEnvironment",
"flake8.interpreter": [
"${workspaceFolder}/.venv/bin/python"
],
"black-formatter.importStrategy": "fromEnvironment",
"black-formatter.interpreter": [
"${workspaceFolder}/.venv/bin/python"
],
"black-formatter.showNotifications": "onError",
"isort.importStrategy": "fromEnvironment",
"isort.interpreter": [
"${workspaceFolder}/.venv/bin/python"
],
"isort.check": true,
"isort.showNotifications": "onError",
}
7. pre-commitの設定
2023年12月21日時点では、flake8とBlackを実行するようにしています。
まずはgitリポジトリの作成。
git init
次にプロジェクトフォルダで.pre-commit-config.yamlを作成し、以下の内容で保存します。flake8によるチェックとBlackによるフォーマットをかけたいと思います。Blackによるフォーマットは上記のVSCodeの設定でファイル保存時にも実行しているので不要かもしれませんが、念の為入れておきました。
repos:
- repo: local
hooks:
- id: flake8
name: flake8
entry: poetry run flake8
language: system
types: [python]
- id: black
name: black
entry: poetry run black .
language: system
types: [python]
gitでcommitが実行された時にこの処理を実行したいので、git/hooksに設定する必要があります。
# コマンド
pre-commit install
# 表示
pre-commit installed at .git/hooks/pre-commit
これでローカルのリポジトリにCommitした際にflake8とBlackが実行されます。綺麗な状態でCommitされるといいですね。
さいごに一言
久しぶりにPythonの環境構築をしてみました。@nuco_kjmさんの2022年度版Python環境構築徹底解説を読みながらだったので簡単に設定できました。感謝。
自分の会社の受託開発事業はPythonから始めるので、少し触っておくことにしました。基本的なところをおさらいしつつ、長期で取り組める個人プロジェクトのアイデアを探していこうと思います。ものづくりは楽しいので細々とでも続けていきたいです。