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:从特定目录卸载包的主要内容,如果未能解决你的问题,请参考以下文章