0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pipenv多用によるムダかもしれないvenvを整理する(適当)

Posted at

なにをしてるのか?

pipenvを使って仮想環境を作るじゃないですか。でもこれって、作るきっかけとなったディレクトリがあったから作成されたわけで、ちょっと作って不要になったら『きっかけのディレクトリ』が削除されてしまっていて、作成された仮想環境が無意味になってしまうことがありませんか?

ディレクトリを削除する前にpipenv --rmしろよ、という話もありますが、していなかった場合に山積してしまうので、そういうものを削除したいという話です。

前提条件

今回の前提条件は以下の通り。

  • macOS(Sequoiaにて確認)
  • シェルを使います

どこに仮想環境はあるのか

実際に仮想環境を使っているディレクトリがわかっていれば、そのディレクトリに入ってwhichすればいいわけですよね。

% cd ~/some/sourcedir
% pipenv run which python

このとき可能性は2つありそうです。

  • このディレクトリ直下(.venvなど)
    • これはディレクトリそのものを消せば済むだけなので楽ちん
  • ~/.local/share/virtualenvs
    • ここにこれまで作られたものが山積みとなっている

ここでは後者が問題となります。

仮想環境はどのディレクトリを生成源としているのか

ちょっと確認すると、各仮想環境ディレクトリにある.projectファイルに入っています。

% cd ~/.local/share/virtualenvs
% ls
FugaPythonTest-mnWoDknf         calc-9yT_M8cQ                   dockerbook-Cv0d3VR9             github-pages-sample-S_lCV0KN    pythonProject3-ueJ4H6Z-         tmp-agwWamBd
apiserver-study-kit-7r5IN4zl    compose-wordpress-ayvybK9J      fastapi-KYozqYVt                jsd-gPxllzqj                    pythontest-BcnVINUZ             xampp-devenv-YPuEHIYF
asbook-ZYHrOfTI                 deco-VHY-sAUw                   flet-calc-R8ij6Hm7              numpy-SUf2Jong                  restart-router-WH7gP2l4         xampp-devenv-doc-YDoh67jC
book-m9RVk3aO                   django-sample-O3yebDy3          github-book-ci5jYApU            python-study-template-G4FxdT1f  tests-Xz5WsfNt                  xampp-system-O_UCM2x4
% cat calc-9yT_M8cQ/.project  
/Users/densuke/Documents/calc

ということは、雑に考えれば、このディレクトリが無くなっていれば呼ばれることもないわけでゴミと考えて良いと思います。

なお、各ディレクトリにモジュールも入っているため、よく使っているところはそれなりに大きくなっています。

% du -hs *    # ~/.local/share/virtualenvsにいること前提
 12M    FugaPythonTest-mnWoDknf
143M    apiserver-study-kit-7r5IN4zl
 90M    asbook-ZYHrOfTI
370M    book-m9RVk3aO
116M    calc-9yT_M8cQ
...(以下略)

ではどうするか?

各仮想環境の中にある .project に書かれたディレクトリがなければ削除する というロジックでどうにかできそうです。

% for DIR in *;do P=$(cat $DIR/.project); [ ! -d "$P" ] && echo "$DIR"; done

これで『既に存在しないディレクトリを向けに作られた仮想環境』が出力されることになります。
これらを削除すればいいわけですよね…

破壊的操作になるので実際の削除方法は書きません、ここまで来られた方はおわかりですよね。

きっと『もっといい方法』があるはず

もっとシンプルな方法がきっとあると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?