🐙

[小ネタ]pipenvのvenvとPipfileの対応を確認して不要なものを消したい

2023/07/17に公開

やりたいこと

  • pipenvの操作を失敗して、不要なvirtualenvsが沢山できていたので掃除しました。
  • 念のためPipfileとの関連を確認しながら消しました。

課題

VSCodeでPythonインタプリタを選択しようとしたら、、あら?みたいな大量の環境が。これを消して整理したいです。(pyenvでPythonを複数インストールしているのも原因なのですが、ここでは扱いません)

やったこと

確認が必要な場所

  • venvの場所(~/.local/share/virtualenvs/)
  • Pipfileの場所(各プロジェクトのフォルダ)

が別々にあるので確認します。venv名はプロジェクトのフォルダ名から作られますが、(記憶が薄いので)確認が必要でした。

存在するvenvを探す

ls -ltrh ~/.local/share/virtualenvs/

これで一覧で出てきます。

例えばmy-env-xxxを消したいとき

rm -fr path/to/my-env-xxx

対応するPipfileを探す

find ~/.local/share/virtualenvs -name ".project"

.project の中にプロジェクトへのパスがあります。以下でPipfileのディレクトリが出ます。ディレクトリが存在しない(移動している)ときもあります。

cat ~/.local/share/virtualenvs/my-env-xxx/.project

Pipfileの場所から探す

Pipfileの場所が分かっているとき、対応するvenvを探すには

pipenv --venv

とやると

/xxxx/.local/share/virtualenvs/my-evn-xxx

venvのパスが出力される。

(Pipfileがあるだけのときのエラー:No virtualenv has been created for this project yet!)

対応するvenvを削除する(Pipfileは別途)

pipenv --rm

Pipfileを探す

これで、Pipfileがあるだけのときも見つかります。

find ./ -type f | grep Pipfile$

まとめ

pipenv環境のPipfileを探したり消したりする方法についてまとめました

Discussion