例如,我可能已经安装了pkg1
,这需要pkg2
和pkg3
。我安装的其他软件包都不需要这两个。那么,在此期间或之后pip uninstall pkg1
,我怎样才能使 pip 卸载pkg2
和pkg3
?
问问题
261 次
3 回答
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
于 2013-10-31T05:51:46.330 回答
0
您必须手动执行此操作,因为 pip 将不知道其他软件包依赖于什么,pkg2
并且pkg3
.
最好的方法是使用虚拟环境;它允许您将 Python 包与系统(基础)Python 隔离开来。
于 2013-10-31T04:51:48.193 回答
0
我不认为 pip 可以做到这一点。
如果您在 virtualenv 中,您只需将其删除并重新安装到新的。
如果你在系统中,你不应该使用 pip 而是使用分发包管理器。
于 2013-10-31T04:48:12.187 回答