同一ワークスペース内の複数フォルダごとに、環境変数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現在の状況)
- 複数の似ているが別のプロジェクトを、手元では一つのワークスペースで管理して、構文チェックは生かしたい。