12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2023最新版】VSCode Python setting.jsonの更新が億劫なあなたへ

Last updated at Posted at 2023-11-12

概要

皆さんPythonのプログラミングをVSCode(Visual Studio Code)で行っている際に、以下の画像のようなポップアップを目にしたことはないでしょうか。

Snag_24242cb3.png

簡単に言うと、setting.jsonに記載しているPythonのリンターやフォーマッターの設定が非推奨になったので更新してね、ということです。
以下のページへのリンクがあり、リンク先には丁寧な解説があるのですが、詳細な手順はないので、いつか更新しよう、と先延ばしにしている人も多いのではないでしょうか。(私もその一人です。。。。)
Migration to Python Tools Extensions

自分を含めたそんな人のために、じゃあ具合的に何をどうすればいいんや!というのをまとめました。
参考にして頂ければ幸いです。

リンターにpylintをお使いの場合

これまではsetting.jsonに以下のように記載していたかと思います。

setting.json(抜粋)
{
    "python.linting.pylintEnabled": true,
    "python.linting.pylintPath": "パス情報(未設定の場合もあります)"
}

上記の記載自体が非推奨になりました。
なので削除します。
代わりに以下の拡張機能をインストールします。
Pylint

ステータスはまだPreviewですが特に問題なく使えます。

豆知識

従来はpipでpylintをインストールする必要がありました。
しかし、VSCodeの拡張機能をインストールする場合、pipでpylintのインストールが不要になります。
逆に言うと、pipでpylintがインストールされている場合、デフォルト設定ではVSCode拡張機能がインストールしたpylintが利用されます。
これは、デフォルトで以下の設定になっているからです。

setting.json(抜粋)
{
    pylint.importStrategy: "useBundled"
}

当方の環境では以下のバージョンのpylintが利用されているようです。(2023-11-12現在)

2023-11-12 15:29:26.818 [info] 
pylint 3.0.2
astroid 3.0.1
Python 3.9.6 (default, Jul 19 2021, 01:20:30) 
[GCC 9.3.0]

もし、環境にインストールされたpylintを利用したい場合は、以下のように設定を変更します。

setting.json(抜粋)
{
    "pylint.importStrategy": "fromEnvironment"
}

ちなみに、VSCode拡張のPythonのライブラリ群は以下に保存されているようです。
(WSL 2, Ubuntu環境の場合)

 ~/.vscode-server/extensions/ms-python.pylint-2023.10.0/bundled/libs

Snag_24438924.png

リンターにmypyをお使いの場合

以下の設定が非推奨のため、削除します。

setting.json(抜粋)
{
    "python.linting.mypyEnabled": true,
    "python.linting.mypyPath": "${workspaceFolder}/.venv/bin/mypy",
}

以下の拡張機能をインストールします。

Mypy Type Checker

pylintと同じく、拡張機能をインストールしただけで自動的に設定が有効になり利用可能となります。
(別途pipでのインストールは不要です)

フォーマッターにblackをお使いの場合

次はフォーマッターblackについてです。
以下のように記載していたかと思います。

setting.json(抜粋)
{
    "python.formatting.provider": "black",
    "python.formatting.blackPath": "パス情報(未設定の場合もあります)",
    "python.formatting.blackArgs": ["--skip-string-normalization"],
}

上記の設定が非推奨になります。
なので削除します。
代わりに以下の拡張機能をインストールします。
(pylintと同様に別途pipでのライブラリインストールは不要です)

Black Formatter

また、setting.jsonは以下のようにします。

setting.json(抜粋)
{
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true,
    },
    "black-formatter.args": [
      "--skip-string-normalization"
    ]
}

インポートライブラリのソート設定について

Pythonファイルの先頭で利用するライブラリをインポートするかと思います。
従来はisortを使ってソートしていたと思いますが、そちらも拡張機能への移行が推奨されています。

まずは以下の拡張機能をインストールします。
isort

setting.json(抜粋)
{
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
  },
  "isort.args":["--profile", "black"],
}

実際に動作させた場合は以下のようになります。
ファイル保存時に自動的にインポート部分がソートされます。

78C5F278-6E6F-4516-A474-467659BCDFB0.GIF

おまけ1:Ruff導入のススメ

Rust言語で記述された高速で動作するRuff、気になっている皆さんも多いのではないかと思います。
個人的な意見としては、とても素晴らしいので皆さんぜひインストールしてください!!
インストールも設定も超簡単です。

まずは以下の拡張機能をインストールします。
Ruff

次にプロジェクト直下でpyproject.tomlを作成します。

pyproject.toml
[tool.ruff]
target-version = "py39" # Pythonのバージョンを指定
ignore = []
select = ["ALL"] # すべてのルールを適用する


[tool.ruff.pydocstyle]
convention = "google" # docstringの形式を指定

設定はこれだけです。
自動的にいろいろなルールでコードのチェックが入り、高品質なコードの作成が可能になります。
また、チェックが失敗した場合、なぜ失敗したのか、どう修正すべきなのかが明確にまとまっているページへのリンクがあるので、コードの修正も簡単です。

例えば、以下ではpathlibをインポートしていますが、利用していません。
Snag_248bb20b.png

F401のルールへのリンクがあるので、クリックしてみます。
ページ内のExampleの部分を見るとどう修正すべきか一目瞭然です。

Snag_248d4712.png

Pythonコーディング歴はそこそこ長いですが、実際に私がコーディングしている中でRuffの警告で学ぶこともまだまだたくさんあります。
ぜひ活用してみてください(^_-)-☆

Appendix

Ruffの各種設定については以下を参照ください。
Ruff -settings-

Ruffの適用されるルールの一覧は以下を参照ください。
Ruff -rules-

最後に

この機会にVSCodeのPython周りの設定をアップデートしてみてはいかがでしょうか。
最近の開発環境は変化がとても速く最新の情報に追いつくだけでも大変だと思います。
本記事が少しでも皆さんの開発ライフを便利にすることを祈ってます。

12
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?