例如,我可能已经安装了pkg1
,这需要pkg2
和pkg3
。我安装的其他软件包都不需要这两个。那么,在pip uninstall pkg1
期间或之后,如何进行pip卸载pkg2
和pkg3
?
答案 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不会知道其他软件包依赖于pkg2
和pkg3
。
最好的解决方法是使用virtual environment;它允许您从系统(基础)Python中隔离Python包。