【问题标题】:Tracking installed dependencies of a Python package for uninstallation跟踪 Python 包的已安装依赖项以进行卸载
【发布时间】:2018-10-04 18:13:13
【问题描述】:

pip的当前行为:

想象一个 Python 包 spam。它具有三个依赖项 - 包 package1package2package3。当用户使用pip 安装包spam 时,用户之前没有安装任何依赖项,因此同时安装了所有三个依赖项。当用户卸载带有pip 的包时,只会删除spam 包 - 它的依赖关系保持不变。

我想知道是否可以实现另一个场景:

在用户使用pip 安装包spam 的那一刻,用户之前已经安装了package1 包,因此只安装了两个依赖项。用户在卸载pip包时,可以选择是否删除在安装spam包时已经安装的依赖。也就是说,package1 已经存在,我们不想删除它,但是,package2package3 在安装spam 的过程中已经安装,用户可能会明确地说:“我想删除依赖项在软件包安装期间已安装的此软件包的数量”。

这背后的动机是有一个 Python 包有很多依赖项,我想知道是否有任何聪明的方法可以让用户在卸载时清理它的依赖项。

【问题讨论】:

    标签: python pip package dependency-management


    【解决方案1】:

    使用autoremove 代替uninstall

    pip install pip-autoremove
    pip-autoremove spam -y
    

    spam 是您的包裹。

    【讨论】:

    • 我认为这不是 OP 想要的。 pip-autoremove 删除了“未使用的依赖项”,但 package1 可能不是其他包的依赖项,而只是 OP 编写的脚本中使用的东西。
    • @FlyingTeller,情况正是如此。 package1 可以被我拥有的任何 Python 程序使用,所以我不想在卸载 spam 时卸载 package1
    • pip-autoremove 如何检测到我有一些脚本在 import package1 周围存在?
    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多