EmacsからPyrightを使う時にPipenvのライブラリを認識してもらう方法
一つ前の解決済みの問題
boto3-stubs · PyPI とかをインストールしてくれてるのにmypyが認識してくれない。つらい。
ドキュメントでもmypyより、 Pyright が優先されて書かれてるし変な意地はらずに使った方が良いのではと思って問題解決すれば良いなとダメ元で使ってみました。
boto3が認識されました。良かった。
問題
git submoduleで置いてるプライベートなパッケージを認識してくれない。
pipenv run pyright
みたいに動かせば認識してくれるんですが、 pyright単体だとダメです。
pyrightconfig.jsonを書きたくなかった
pyrightconfig.json を書く方法は嫌でした。
これでvenvPath
を指定すれば動くのかもしれませんが、ユーザごとにハッシュ値みたいなのが入って決まるvenvをプロジェクトごとに一つ一つ決め打ち?
冗談ではない。
そういえばelpy動かすときもPipenvのパスで困ったなあと思い出しました
Emacsにelpyをpipenv環境でも動くように導入する - ncaq
の応用で行けるのではと思いました。
(leaf lsp-pyright
:ensure t
:require t
:after python
:defvar lsp-pyright-venv-path
:init
(defun lsp-pyright-setup-when-pipenv ()
(setq-local lsp-pyright-venv-path python-shell-virtualenv-root)
(lsp-restart-workspace))
:hook
(python-mode-hook . lsp))
のようにlsp-pyright-setup-when-pipenv
を定義してあげて、
pipenv-auto-activate
のようなpipenvを設定する関数の最後にこれを呼べば認識してくれるようです。
どうやら動くようです。何故か初期化する時に一度、
file-missing "Opening directory" "そのようなファイルやディレクトリはありません"
と出てきますが…
動作に支障は無いようですね。
とりあえずは解決です。