使用“pip”卸载一个包会同时删除其依赖包吗?

311 投票
11 回答
283456 浏览
提问于 2025-04-17 05:06

当你用 pip 来安装一个软件包时,所有需要的其他软件包也会一起安装,这些叫做依赖包。那么,如果你卸载了这个软件包,依赖的那些软件包也会被一起卸载吗?

11 个回答

17

我用这行命令成功地去掉了一个软件包的依赖:

for dep in $(pip show somepackage | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done

这个方法在 pip 1.5.4 版本上有效。

407

你可以安装并使用 pip-autoremove 这个工具,它可以帮你删除一个软件包以及那些不再使用的依赖项。

# install pip-autoremove
pip install pip-autoremove
# remove "somepackage" plus its dependencies:
pip-autoremove somepackage -y
156

不,它不会卸载依赖的包。它只会移除你指定的那个包:

$ pip install specloud
$ pip freeze # all the packages here are dependencies of specloud package

figleaf==0.6.1
nose==1.1.2
pinocchio==0.3
specloud==0.4.5

$ pip uninstall specloud
$ pip freeze

figleaf==0.6.1
nose==1.1.2
pinocchio==0.3

你可以看到,这些包是specloud的依赖包,它们仍然存在,但specloud这个包本身已经被移除了。

如下面所提到的,你可以使用pip-autoremove这个工具来移除一个包以及那些不再使用的依赖包。

撰写回答