如何制作其他包不再需要的pip卸载包?

时间:2013-10-31 03:00:11

标签: python pip

例如,我可能已经安装了pkg1,这需要pkg2pkg3。我安装的其他软件包都不需要这两个。那么,在pip uninstall pkg1期间或之后,如何进行pip卸载pkg2pkg3

3 个答案:

答案 0 :(得分:1)

pip中没有简单的内置命令或标志来执行此操作,但在卸载pkg1之前,您可以确定依赖项:

$ pip show pkg1 | grep Requires

您可以通过一点点bash fu快速获得包装要求的摘要:

$ for P in $(pip list | awk '{print $1}') ; do echo -n $P::' '; pip show $P | grep Requires ; done

然后对于第一个命令显示的任何软件包(pkg2和pkg3),如果它们没有显示为第二个命令中任何其他软件包的依赖项,那么您也可以显式pip uninstall

您还可以找到所有不依赖于任何其他软件包的软件包:

$ cat <(pip show $(pip list | awk '{print $1}') | grep Requires | sed -e s/Requires:// -e s/,//g | xargs -n 1) <(pip list | awk '{print $1}') | sort | uniq -u

答案 1 :(得分:0)

我认为pip不能做到这一点。

如果你在virtualenv中,你只需删除它并重新安装到新的。

如果您在系统中,则不应使用pip,而应使用分发包管理器。

答案 2 :(得分:0)

您必须手动执行此操作,因为pip不会知道其他软件包依赖于pkg2pkg3

最好的解决方法是使用virtual environment;它允许您从系统(基础)Python中隔离Python包。