使用“pip”卸载一个包会同时删除其依赖包吗?
当你用 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这个工具来移除一个包以及那些不再使用的依赖包。