SpacemacsでLSPの要となるlsp-modeのうちlsp-pyrightによってPythonの型チェッカーpyrightが使えるようになったことを最近知ったので使う
(従来のpylsでいいじゃん説はあるが最近なんか重い気がしたので速いと評判のpyrightを試している)
pyrightインストール
node使ってるならnpmでpyrightをインストールしておく
$ npm install -g pyright
SpacemacsでPython LayerのLSPサーバをpyrightに指定
.spacemacs
のlayer設定ではこう書けとあるので書く。
LSPサーバとして指定できる模様
(defun dotspacemacs/layers ()
(setq-default
dotspacemacs-configuration-layers
'(
(python :variables
python-backend 'lsp
python-lsp-server 'pyright)
)
)
)
cf. https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Blang/python
Spacemacs側でjediをsetupする必要はなさそう
LSPプロジェクトのルート下に設定ファイルを作成
Pythonファイルを開くとLSPのプロジェクトルートを決めろと言われるが、そのプロジェクトルートに pyrightconfig.json
を作っておく。
Ubuntu18.04LTS on WSL2 on Windows10でやったが、たとえばユーザ名 v2okimochi
でプロジェクトルート v2project/
に置くならこんな感じ
{
"venvPath": "/home/v2okimochi/.local/share/virtualenvs/v2project-ABCDEFGH",
"stubPath": "",
"executionEnvironments": [
{
"root": "src"
},
{
"root": "tests",
"extraPaths": [
"src"
]
}
]
}
- pipenvというかpyenvを使っている場合は
venvPath
を指定する- home directory下の
.local/share/virtualenvs/
あたりにあると思われ - これも役立つかも SpacemacsでPythonの自動補完やlinterなどを効かせる - Spacemacsでpython仮想環境を認識させる
- home directory下の
- 不要なエラーを消すため
stubPath
を空指定-
typings is not a valid directory
エラーが出てそれなりに目障り (無害らしいけど)
cf. typings.py` file inside a project causes pyright to report that this is not a valid directory.
-
- pyrightに読み込んでもらうルートディレクトリを指定する
- 上の例は、プロジェクトルートに
src/
とtests/
がある場合 -
tests/
の指定でsrc
も指定しないと、tests/
のソースコードでsrc/
のソースコードを参照できなさそう
- 上の例は、プロジェクトルートに
3rd partyライブラリを読めてないかも
boto3とか使おうとしたらimport unresolvedエラーだった。
VSCodeでの似たようなエラーは修正されたようだが。。。
cf. all third party imports not resolved in VS Code
とりあえず pipenv run pip install boto3
でこっそりインストールしたら解決したけどなんか違う気がする (Pipfileに書いてあるのにインストールされてないとしたらそれはそれで気になる)