如何卸载使用distutils安装的python包?

时间:2008-12-31 05:26:15

标签: python

你能简单地从python安装中删除目录,还是有任何你必须删除的遗留文件?

12 个答案:

答案 0 :(得分:41)

根据您传递给install的选项以及系统/包中distutils configuration files的内容而有所不同。我不相信在这些方式指定的目录之外修改任何文件。

值得注意的是,此时distutils does not have an uninstall command

同样值得注意的是,删除包/ egg可能会导致依赖性问题 - 像easy_install这样的实用程序会尝试缓解此类问题。

答案 1 :(得分:18)

您需要删除的三件事是:

  1. 软件包/模块
  2. 脚本
  3. 数据文件
  4. 现在,在我的linux系统中,这些存在于:

    1. /usr/lib/python2.5/site-packages
    2. 的/ usr / bin中
    3. 的/ usr /股
    4. 但是在Windows系统上,他们更可能完全在Python发布目录中。我不知道OSX,除了它更像是遵循linux模式。

答案 2 :(得分:14)

另一个基于黑客的时间戳:

  1. 创建一个锚:touch /tmp/ts
  2. 重新安装要删除的软件包:python setup.py install --prefix=<PREFIX>
  3. 删除比锚文件更新的文件:find <PREFIX> -cnewer /tmp/ts | xargs rm -r

答案 3 :(得分:7)

是的,只需删除任何安装了distutil的东西是安全的。这适用于已安装的文件夹或.egg文件。当然,依赖于该代码的任何东西都将无法运行。

如果您想再次使用,只需重新安装即可。

顺便说一句,如果你使用distutils也考虑使用多版本功能。它允许您安装任何单个软件包的多个版本。这意味着如果您只是想安装较新版本,则无需删除旧版本的软件包。

答案 4 :(得分:4)

如果这是出于测试和/或开发目的,setuptools有一个develop命令,每次更改时都会更新(因此您不必每次都卸载并重新安装)变化)。您也可以使用此命令卸载软件包。

如果您使用此功能,那么您声明为脚本的任何内容都将作为延迟文件留下。

答案 5 :(得分:4)

在ubuntu 12.04中,我发现默认情况下你需要查看的唯一地方是

/usr/local/lib/python2.7/

只需删除相关的文件夹和文件,如果有的话!

答案 6 :(得分:4)

install --record + xargs rm

sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt

删除所有文件,但留下空目录。

这不太理想,它应该足以避免包冲突。

然后你可以通过阅读files.txt手动完成工作,或者勇敢地自动删除空目录。

安全助手将是:

python-setup-uninstall() (
  sudo rm -f files.txt
  sudo python setup.py install --record files.txt && \
  xargs rm -rf < files.txt
  sudo rm -f files.txt
)

在Python 2.7.6,Ubuntu 14.04中测试。

答案 7 :(得分:3)

对于Windows中的Python:

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?

答案 8 :(得分:2)

我刚刚卸载了一个python包,即使我不是某些我做得非常完美,但我有理由相信。

我首先得到一个所有 python相关文件的列表,按日期排序,假设我的包中的所有文件都有或多或少相同的时间戳,而没有其他文件会。

幸运的是,我已经在/opt/Python-2.6.1下安装了python;如果我一直在使用我的Linux发行版附带的Python,我将不得不搜索所有/usr,这可能需要很长时间。

然后我只是查看了这个列表,并且非常清楚地注意到我想要核实的所有东西都包含一个目录/opt/Python-2.6.1/lib/python2.6/site-packages/module-name/和一个文件/opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info

所以我刚刚删除了那些。

以下是我如何获得按日期排序的文件列表:

find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-

(顺便说一句,我认为必须是GNU“find”;你在OS X上获得的味道不知道“-printf'%T @'”)

我使用所有时间。

答案 9 :(得分:2)

对于Windows 7,

控制面板 - &gt;程序 - &gt;卸载

,然后

选择要删除的python包。

答案 10 :(得分:0)

在Mac OSX上,可以手动删除 pathToPython / site-packages / 下的这两个目录:

  • {packageName}
  • {packageName}-{version} -info

例如,删除 pyasn1 ,这是一个distutils安装的项目:

  • rm -rf lib / python2.7 / site-packages / pyasn1
  • rm -rf lib / python2.7 / site-packages / pyasn1-0.1.9-py2.7.egg-info

要找出您的站点软件包在哪里:

python -m site

答案 11 :(得分:-1)

ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible. ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible. Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit Attempting uninstall: torch Found existing installation: torch 1.0.0 Uninstalling torch-1.0.0: Successfully uninstalled torch-1.0.0 Attempting uninstall: torchvision Found existing installation: torchvision 0.2.1 Uninstalling torchvision-0.2.1: Successfully uninstalled torchvision-0.2.1 Attempting uninstall: entrypoints Found existing installation: entrypoints 0.2.3 ERROR: Cannot uninstall 'entrypoints'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

然后我输入:

conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit

完成!