概要
pipenv 環境で lsp などを使う場合に便利そうなので使ってみました
環境
- Ubuntu 18.04
- emacs 27.1
- Python 3.10.2
インストール
package-list-packages -> pipenv.el を選択してインストール
pipenv-mode の有効化
pipenv-mode を実行すれば OK です
現在の環境のアクティブ化
Python のプロジェクトを開いて pipenv-active を実行してみましょう
すると python-shell-virtualenv-root
という変数に pipenv --venv
で実行されたパスが設定されます
describe-variable python-shell-virtualenv-root
lsp-pyright と組み合わせる
前回紹介した中に virtualenv のパスを手動で設定する箇所を紹介しました
この変数に python-shell-virtualenv-root の値を設定することで動的に lsp-pyright への virtualenv のパスを設定することができそうです
(setq lsp-pyright-venv-path python-shell-virtualenv-root)
プロジェクトを切り替えた際に自動でアクティブ化する
こんな感じで .emacs に記載すればプロジェクト切り替え時にアクティブ化することができるようです
(use-package pipenv
:hook (python-mode . pipenv-mode)
:init
(setq
pipenv-projectile-after-switch-function
#'pipenv-projectile-after-switch-extended))
これと更に先程紹介した lsp-pyright の設定を組み合わせればプロジェクトを切り替えた際に自動で pyright の向き先を変更することもできそうです
最後に
当然ですが pipenv で動作していないプロジェクト配下でアクティブ化しても python-shell-virtualenv-root には値は入りません
poetry などで動作している場合でも値は入らないので注意してください
0 件のコメント:
コメントを投稿