删除目录后如何删除所有pipenv virtualenv?

Iza*_*aya 10 bash virtualenv pipenv

我有一个A/包含 Pipfile 和通过运行获得的 Pipfile.lock 的目录pipenv install。所以这个目录下有一个对应的virtualenv /home/username/.local/share/virtualenvs/A-...

然后我删除这个A/目录。有没有办法检查所有 pipelinev virtualenvs,找到已删除的目录并删除相应的 virtualenvs ?

在这种情况下,它应该发现它A/已被删除,因此删除 virtualenv: /home/username/.local/share/virtualenvs/A-...

yes*_*ema 12

pipenv没有特殊的选项。但是您可以使用这些 bash 脚本(我使用 venvs 目录创建它们,~/.local/share/virtualenvs/因此如果您的 venvs 文件夹不同,您应该更改它)

打印无用的 venv:

for f in $(find ~/.local/share/virtualenvs/*/.project -type f); do proj_path="$(cat $f)"  && [ ! -d "$proj_path" ] && echo ${f//\/.project};  done;
Run Code Online (Sandbox Code Playgroud)

打印仍具有相应 venv 的不存在的项目路径:

for f in $(find ~/.local/share/virtualenvs/*/.project -type f); do proj_path="$(cat $f)"  && [ ! -d "$proj_path" ] && echo $proj_path;  done;
Run Code Online (Sandbox Code Playgroud)

打印两者(无用的 venvs 且不存在的项目文件夹):

for f in $(find ~/.local/share/virtualenvs/*/.project -type f); do proj_path="$(cat $f)" && [ ! -d "$proj_path" ] && echo $proj_path "\n"${f//\/.project} "\n";  done;
Run Code Online (Sandbox Code Playgroud)

删除无用的venv

for f in $(find ~/.local/share/virtualenvs/*/.project -type f); do proj_path="$(cat $f)" && [ ! -d "$proj_path" ] && rm -rif ${f//\/.project} && echo DELETING ${f//\/.project};  done;
Run Code Online (Sandbox Code Playgroud)

删除之前尝试打印 venv!

ps 如果你的 venv 文件夹不是~/.local/share/virtualenvs/,请确保将其更改为你的 venv 路径!