用“点子”卸载软件包是否也删除相关软件包?

当你使用pip来安装一个软件包的时候,所有需要的软件包也将被安装(依赖)。 卸载该软件包是否也删除了相关软件包?

不,它不会卸载依赖包:

 $ pip install specloud $ pip freeze 

云南黑籽== 0.6.1
鼻子== 1.1.2
匹诺曹== 0.3
specloud == 0.4.5

 $ pip uninstall specloud $ pip freeze 

云南黑籽== 0.6.1
鼻子== 1.1.2
匹诺曹== 0.3

正如你可以看到所有的软件包仍然存在,但没有specloud软件包本身。

您可以安装并使用pip-autoremove实用程序删除软件包和未使用的依赖项。

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

我已经使用这个bash行成功地删除了一个包的依赖关系:

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

这工作在点1.5.4

也是一个好的措施。 考虑依赖与已安装的其他软件包相交的场景。 你最好在每次新安装时冻结一个requirements.txt文件,并比较之前的requirements.txt版本以手动删除依赖项。