pip:从特定目录卸载包

Posted

技术标签:

【中文标题】pip:从特定目录卸载包【英文标题】:pip: Uninstalling package from specific directory 【发布时间】:2015-09-23 02:24:01 【问题描述】:

我使用 pip install -t <dir> 将软件包安装到特定的本地目录中。

现在我想卸载它,但我找不到那个特定目录卸载它的方法。对于uninstall,没有有效的选项 -t | --target,为install 命令而存在。

【问题讨论】:

如果你运行pip list你能看到包吗? 不,pip list 显示全局包列表 我认为如果该文件夹仅包含该包,您可以简单地删除该文件夹,或者如果该文件夹中有更多其他包,则删除其中的包。 该文件夹是我为特定项目安装的所有软件包的***文件夹。我无法删除它。我只需要删除单个包及其所有依赖项。 pip install -t <dir>的某种“撤消” 【参考方案1】:

手动删除它们。 pip不保留已安装包的隐藏目录,直接扫描/usr/local/lib/python2.7/dist-packages等目录,判断安装的是什么。

因此,如果您使用 -t 安装了某些东西,只需转到您指定的目录并删除所有跟踪,包括任何元数据文件。例如,

$ mkdir localpips
$ pip install -t localpips docopt
Downloading/unpacking docopt
  Downloading docopt-0.6.2.tar.gz
  Running setup.py (path:/tmp/pip_build_garyw/docopt/setup.py) egg_info for package docopt

Installing collected packages: docopt
  Running setup.py install for docopt

Successfully installed docopt
Cleaning up...
$ cd localpips
$ ls -l
total 48
drwxr-xr-x 2 garyw garyw  4096 Jul  6 17:27 docopt-0.6.2.egg-info
-rw-r--r-- 1 garyw garyw 19946 Jul  6 17:27 docopt.py
-rw-r--r-- 1 garyw garyw 23326 Jul  6 17:27 docopt.pyc
$ 

要卸载它,只需进入localpips 并删除创建的文件和目录。

我知道,它不是那么优雅,有时你不知道如果你不仔细观察安装可能与什么有关,但事实就是如此。

【讨论】:

你说得对,它没有被隐藏。我的问题是关于包依赖关系。我安装了多个软件包。每个都安装了它的依赖项。现在我需要删除其中一个及其依赖项(但前提是它们没有被其他包使用)。这不是一项微不足道的任务。我确定应该有 pip install -t <...> 的反义词 遗憾的是,pip 没有强大的依赖跟踪器,因此删除一个包(即使在系统目录中)也不会删除它的依赖。包有一种标准的方式声明它们的要求,但是由于没有数据库保存在任何给定时间需要什么,因此无论您是否使用-t,都没有卸载“带有依赖项”选项。有一个包在 github 上调用 pip-autoremove 进行分析和删除,但它不支持自定义目录。:-(

以上是关于pip:从特定目录卸载包的主要内容,如果未能解决你的问题,请参考以下文章

pip 卸载不会完全删除包

卸载 pip 是不是会删除其所有软件包?

在使用Python时如何利用pip安装与卸载包

pip包的升级安装和删除/卸载

绕过 pip 卸载的确认提示

pip命令