LoginSignup
8

More than 3 years have passed since last update.

VSCodeでPyrightとpylintからのimport警告を無くしたい

Last updated at Posted at 2020-02-08

同一ワークスペース内の複数フォルダごとに、環境変数PYTHONPATHを切り替えたい(けれど切り替え方法がわからない)、という時に、解決できた方法です。

Pyrightからの「Import 'xxx' could not be resolved Pyright (reportMissingImports)」の警告や、
pylintからの「Unable to import 'xxx' pylint(import-error)」の警告が出る場合に、フォルダ毎にimport対象の検索フォルダを変えられます。

また、同一ワークスペース内の複数フォルダで、同名のimport対象が存在する場合でも、適切な構文チェックや、文字補完が効くようになります。

ワークスペースを分けたり、venvで仮想環境を使ったりせず、簡易にimportの警告をつぶしたいと思い、いろいろ調べたのですが、同じケースの話題が見つからず、試行錯誤することになったので、備忘録的に投稿します。

フォルダ構成(例)

src/
├── project1/
│   ├── .env(これを追加した)
│   ├── .vscode/
│   │   └── settings.json(これを追加した)
│   ├── project_root/
│   │   └── python_src/
│   │       ├── file1.py
│   │       └── file2.py
│   └── pyrightconfig.json(これを追加した)
├── project2/
│   ├── .env(これを追加した)
│   ├── .vscode/
│   │   └── settings.json(これを追加した)
│   ├── project_root/
│   │   └── python_src/
│   │       ├── file1.py
│   │       └── file2.py
│   └── pyrightconfig.json(これを追加した)
└── server_library/
    └── python_src/
        └── file3.py

Pyright用の設定

ワークスペース直下のPYTHONPATHを切り替えたいフォルダ毎に、「pyrightconfig.json」を置きます。

src/project1/pyrightconfig.json
{
  "executionEnvironments": [
    {
      "root": "project_root",
      "extraPaths": [
        "project_root/python_src",
        "../server_library/python_src"
      ]
    }
  ]
}

pylint用の設定

  • ワークスペース直下のPYTHONPATHを切り替えたいフォルダ毎に、VS Codeのフォルダ設定として、「python.envFile」で環境変数設定用ファイルを指定します。
src/project1/.vscode/settings.json
{
    "python.envFile": "/(ここまでのパス)/src/project1/.env"
}
  • 環境変数設定用ファイルを置きます。
src/project1/.env
PYTHONPATH=/(ここまでのパス)/src/server_library/python_src:/(ここまでのパス)/src/project1/project_root/python_src

想定条件

  • 同一ワークスペース内の複数フォルダに、同じ名前でimportしたいものが含まれている。(内容は似ているが別物)
  • 同一ワークスペース内の複数フォルダのソースから、共通でimportしたいものもあるが、PYTHONPATHは分けたい。
  • ワークスペースは分けたくない。
  • venv仮想環境は使っていない。
  • Mac上のVS Codeを利用。(2020/02/08現在の状況)
  • 複数の似ているが別のプロジェクトを、手元では一つのワークスペースで管理して、構文チェックは生かしたい。

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
8