2022年12月19日月曜日

emacsのpipenv.elを使ってみる

emacsのpipenv.elを使ってみる

概要

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 件のコメント:

コメントを投稿