【Importパスエラー解消】Docker環境下でPoetry+Pylanceで開発を進めている時のVS Codeの設定
概要
Docker 環境下で Poetry + VS Code + Pylance にて開発を進めている時に、Pylance の import のパス解決設定でハマったので備忘録として残しておきます。
設定方法
(必要であればだが、非推奨)仮想環境を無効化
仮想環境の無効化
個人的には Docker 環境下で仮想環境を作成するのもあれなので、無効にしています。
ここは各々の状況等で判断してください。
Poetry の仮想環境の無効化は以下のコマンドで設定します。
poetry config virtualenvs.create false
無効化できたかどうかはターミナル等でpoetry config --list
コマンドを実行し、virtualenvs.create = false
になっているかを確認します。
その後、すでに Poetry の管理下にあるプロジェクトがある場合はpoetry install
でグローバルにパッケージをインストールしておきます。
VS Code の設定
1. パッケージインストール先を確認
poetry env info
を実行し、仮想環境の場所を確認します。以下は例です。
Virtualenv
Python: 3.10.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-example-py3.10
Valid: True
Base
Platform: darwin
OS: posix
Python: /path/to/main/python
Path
項目のパスの下層にlib/python3.10/site-packages
があると思うので、確認してください。
このディレクトリがパッケージのインストール先になります。
2 番目の手順でこのパスを使用します。
2024/05/25 以前の内容
2024/05/25 以前の内容
※一部内容が間違っていたので、修正いたしました。(2022/06/09 現在)
まず、パッケージインストール先を確認します。
python
コマンドを実行し、対話的に以下を実行していきます。
パッケージインストール先の確認にはsys.path
を使用します。
>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
'/usr/local/lib/python39.zip',
'/usr/local/lib/python3.9',
'/usr/local/lib/python3.9/lib-dynload',
'/usr/local/lib/python3.9/site-packages']
上記を実行することで、site-packages
の場所がわかりました。
念のため、site-packages
ディレクトリの中にインストールしたライブラリがあるか確認しておくのがよいでしょう。
python.analysis.extraPaths
の設定
2. 続いて.vscode/settings.json
にて、モジュールインポート先を明示的に定義します。
定義するパスは 前セクションで確認した仮想環境の作成先のディレクトリパスです。
"python.analysis.extraPaths": [
"/path/to/poetry/cache/virtualenvs/test-example-py3.10/lib/python3.10/site-packages"
],
設定が終了したら、VS Code の再読み込みを行ってください。
以上で設定は終了です。
Discussion