2

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

4

3 回答 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 回答