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

在...创建的问题 Wed, Dec 31, 2008 12:00 AM

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

    
85
11答案                              11 跨度>                         

根据您传递给install的选项以及 distutils配置文件。我不相信在这些方式指定的目录之外修改任何文件。

值得注意的是, distutils目前没有卸载命令

还值得注意的是,删除包/egg会导致依赖性问题 - 例如 easy_install 等实用程序试图缓解这些问题。

    
42
2018-12-20 17:23:24Z
  1. 你能否更新一下,直接解决问题的延迟文件部分?
    2008-12-31 11:26:17Z
  2. @ cdleary:谢谢,但是,我希望你只是澄清并加强你的答案,而不是添加一个长评论帖。
    2009-01-01 00:37:27Z
  3. @ S.Lott:对不起,但我不知道你想要澄清的答案的哪一部分 - 你能更具体一点吗?
    2009-01-01 02:23:07Z
  4. 没有卸载命令?失败。
    2012-08-15 23:55:02Z
  5. msg139773 日期:2011-07-04 14:35 distutils2 /packaging现在提供了一个remove函数和一个pysetup remove命令。
    2016-01-28 17:24:56Z
  6. 醇>

您需要删除的三件事是:

  1. 软件包/模块
  2. 脚本
  3. 数据文件
  4. 醇>

    现在,在我的linux系统中,这些存在于:

    1. /usr/lib/python2.5/site-packages
    2. 的/usr /bin中
    3. 的/usr /股
    4. 醇>

      但是在Windows系统上,他们更可能完全在Python发布目录中。我不知道OSX,除了它更像是遵循linux模式。

          
18
2008-12-31 17:31:17Z

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

  1. 创建一个锚点:touch /tmp/ts
  2. 重新安装要删除的软件包:python setup.py install --prefix=<PREFIX>
  3. 删除比锚文件更新的文件:find <PREFIX> -cnewer /tmp/ts | xargs rm -r
14
2011-12-12 08:06:19Z
  1. - 1。我不喜欢| xargs rm -r。我建议手动浏览每个文件 。在ext4(和其他文件系统)上,这个find也将列出所有文件夹。如果您的前缀是/usr,那么您将删除/usr/*
    2019-05-18 05:56:14Z
  2. 醇>

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

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

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

    
7
2009-01-01 20:06:35Z

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

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

    
4
2008-12-31 17:24:59Z

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

 
/usr/local/lib/python2.7/

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

    
4
2012-07-31 21:24:50Z

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中测试。

    
4
2017-04-27 08:05:03Z

对于Windows中的Python:

 
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
    
3
2017-05-27 13:28:06Z

我刚刚卸载了一个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 @'”)

我使用所有时间。

    
2
2009-05-30 00:12:08Z

对于Windows 7,

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

,然后

选择要删除的python包。

    
2
2010-12-24 03:50:18Z
  1. 这个建议对我有帮助。感谢。
    2011-05-03 15:28:12Z
  2. @ Mauricio我没有看到列表中的旧版本,但我可以在网站包中看到egg文件。这是一个问题吗?
    2013-04-09 07:28:25Z
  3. 醇>

在Mac OSX上,手动删除 pathToPython /site-packages / 下的这两个目录将起作用:

  • {的packageName}
  • {的packageName} - {版本} -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
    
0
2018-07-17 18:54:27Z
来源放置 这里