Rye + VSCode で開発環境を整えてみる
最近話題のPythonパッケージマネージャー Rye
この記事ではRye + VSCode
の開発環境を整えていきます。
構築前に
前提
以下がインストールされていること。
- vscode
- Rye
Rye
のインストールは公式を参照。
Github
docs
Rye
の基本操作は以下記事がわかりやすいです。
フォーマッター・リンター
今回は以下フォーマッター・リンターを採用しました。
Ruffはflake8やisortの機能が使用できる静的コード解析ツールです。
設定記述方針
Rye
はpyproject.toml
で管理をしています。
フォーマッター・リンターの設定はpyproject.toml
に可能な限り記述しました。
構築
rye init {project_name}
で初期化した以下のディレクトリ構成から進めます。
.
├── README.md
├── pyproject.toml
└── src
└── {project_name}
└── __init__.py
必要なフォーマッター・リンターを開発パッケージとして追加します。
rye add --dev mypy ruff
変更内容を環境に反映させます。
rye sync
requirements-dev.lock
,requirements.lock
, .venv
が作成されます。
.
├── .venv
├── README.md
├── pyproject.toml
├── requirements-dev.lock
├── requirements.lock
└── src
└── {project_name}
└── __init__.py
この状態からvscode
の設定やpyproject.toml
の設定の記述を行います。
VSCode側の設定
拡張機能
必要な拡張機能を入れます。
必須
今回の構築で必須の拡張機能です。
Name | ID |
---|---|
Python | ms-python.python |
Pylance | ms-python.vscode-pylance |
Ruff | charliermarsh.ruff |
Mypy | matangover.mypy |
推奨
必須ではありませんが、あると便利な拡張機能です。
Name | ID |
---|---|
autodocstring | njpwerner.autodocstring |
even-better-toml | tamasfe.even-better-toml |
even-better-toml
はpyproject.toml
の記述で役立ちます。
settings.json
settings.json
に設定を記述します。
ルーラーの改行文字数に合わせて設定してもらえば良いと思います。
{
// ルーラー
"editor.rulers": [80, 88],
// python path
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"[python]": {
"editor.codeActionsOnSave": {
// isortの並び替えをRuffで実行
"source.organizeImports": true
},
// RuffのFormatter機能を有効化する
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true
},
// 拡張機能ではなく、pip install した場合に指定してください
"ruff.path": ["${workspaceFolder}/.venv/bin/ruff"],
"mypy-type-checker.path": ["${workspaceFolder}/.venv/bin/mypy"]
}
記述内容を見ていただければ分かると思いますが、settings.json
には各フォーマッター・リンターの詳細設定を記述していません。
次項のpyproject.toml
に記載していきます。
pyproject.toml側の設定
pyproject.toml
に各詳細設定を記述します。
必要そうな項目を列挙しました。
Ruffは公式ドキュメントのルールから使用するものだけピックアップしました。
何を設定したら良いか迷ったら下記をコピーしてカスタマイズしてください。
[project]
name = "my_project"
version = "0.1.0"
description = "Add a short description here"
authors = []
dependencies = []
requires-python = ">= 3.8"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.rye]
managed = true
dev-dependencies = [
"mypy",
# black互換のformatterが0.1.2以降
"ruff>=0.1.2"
]
[tool.hatch.metadata]
allow-direct-references = true
[tool.mypy]
strict = true
ignore_missing_imports = true
disallow_untyped_decorators = false
disallow_untyped_calls = false
[tool.ruff]
select = [
"F", # pyflakes
"E", # pycodestyle
"W", # pycodestyle warnings
"I", # isort
"D", # pydocstyle
]
ignore = []
# 1行の最大文字数
line-length = 88
extend-ignore = [
"D105", # undocumented-magic-method
"D107", # undocumented-public-init
"D205", # blank-line-after-summary
"D415" # ends-in-punctuation
]
[tool.ruff.lint.pydocstyle]
# docstringをgoogle styleにする
convention = "google"
[tool.ruff.per-file-ignores]
# 個別設定
# __init__.pyは未使用インポートを許容
"__init__.py" = ["F401"]
設定反映
設定記述後、vscode
の画面をリロードすれば反映されているはずです!
今回構築した設定の最終ディレクトリ構成です。
.
├── .vscode
│ └── settings.json
├── .venv
├── README.md
├── pyproject.toml
├── requirements-dev.lock
├── requirements.lock
└── src
└── {project_name}
└── __init__.py
以上で設定完了です。お疲れ様でした!!
Discussion