pipenvコマンドとPipfile/Pipfile.lock で依存パッケージを管理しているプロジェクトで、ちょっとした開発ツールを入れてみたい。
でも、pipenv install --dev で、Pipfile/Pipfile.lockを変更して、他の開発メンバーに影響を与えるのは避けたい(ex. 他メンバーとは好みが違う。お試しで使ってみたいだけなど)。
解決法: pipenv run pip install を使いましょう
pipenv run pip install で、Pipfileを変更せずに、仮想環境にパッケージを追加できます。
例:
$ pipenv run pip install jupyter # 仮想環境にインストール
$ pipenv run jupyter # 仮想環境のコマンドを実行
解説
ご存知の通り、pipenv は標準ライブラリのpip(などの)のラッパーであり、仮想環境内の pip を直接呼び出せば Pipfileを更新せずにパッケージをインストールできます。
$ ~/.local/share/virtualenvs/patissier-okggs9cf/bin/pip install jupyter # pip を直接呼び出す
とはいえ、仮想環境のパスはプロジェクトごとに異なり、いちいちパスを調べるのは面倒なので、「仮想環境内のコマンドを実行する」ために pipenv run コマンドが用意されています。
pipenv run は環境変数$PATHに仮想環境のbin/を追加します。
$ pipenv run env | grep PATH
PATH=/Users/a-hoge/.local/share/virtualenvs/patissier-okggs9cf/bin:【元々のPATHの内容】
これにより、pipenv run pip installは、仮想環境のpip installを実行することになります。
$ pipenv run pip install jupyter # 仮想環境にインストール