Python 如何使pip卸载其他软件包不再需要的软件包?
例如,我可能安装了Python 如何使pip卸载其他软件包不再需要的软件包?,python,pip,Python,Pip,例如,我可能安装了pkg1,这需要pkg2和pkg3。我安装的其他软件包都不需要这两个。因此,在pip卸载pkg1期间或之后,我如何才能让pip卸载pkg2和pkg3?我认为pip无法做到这一点 如果你在virtualenv中,你只需删除它并重新安装到新的 如果您在系统中,则不应使用pip,而应使用分发包管理器。您必须手动执行此操作,因为pip不知道其他包依赖于什么pkg2和pkg3 最好的方法是使用;它允许您将Python包与系统(基本)Python隔离。pip中没有简单的内置命令或标志来执行
pkg1
,这需要pkg2
和pkg3
。我安装的其他软件包都不需要这两个。因此,在pip卸载pkg1
期间或之后,我如何才能让pip卸载pkg2
和pkg3
?我认为pip无法做到这一点
如果你在virtualenv中,你只需删除它并重新安装到新的
如果您在系统中,则不应使用pip,而应使用分发包管理器。您必须手动执行此操作,因为pip不知道其他包依赖于什么
pkg2
和pkg3
最好的方法是使用;它允许您将Python包与系统(基本)Python隔离。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
$cat我认为说“你永远不应该使用pip”有点强。尤其是当它将被包括在内时。问得好。看起来它是在pip的1.3版中添加的。