如何卸载使用distutils安装的python软件包?
你能简单地删除你的python安装目录,或者是否有任何必须删除的延迟文件?
它根据您传递的install
选项以及软件包中system / distutilsconfiguration文件的内容而有所不同。 我不相信在这些方式指定的目录之外修改任何文件。
值得注意的是, distutils目前没有卸载命令 。
同样值得注意的是,删除软件包/ egg可能会导致依赖性问题 – easy_install
等实用程序会尝试缓解这些问题。
你需要删除的三件事情是:
- 封装/模块
- 脚本
- 数据文件
现在在我的Linux系统上,这些生活在:
- /usr/lib/python2.5/site-packages
- 在/ usr / bin中
- 在/ usr /股
但在Windows系统中,它们更可能完全位于Python分发目录中。 我不知道有关OSX,除了它更像是遵循Linux模式。
另一个时间戳为基础的黑客:
- 创build一个锚点:
touch /tmp/ts
- 重新安装要删除的软件包:
python setup.py install --prefix=<PREFIX>
- 删除比定位文件更新的文件:
find <PREFIX> -cnewer /tmp/ts | xargs rm -r
find <PREFIX> -cnewer /tmp/ts | xargs rm -r
是的,简单地删除distutils安装的任何东西是安全的。 这适用于已安装的文件夹或.egg文件。 当然,任何依赖于该代码的东西都将不再起作用。
如果你想使它重新工作,只需重新安装。
顺便说一句,如果你正在使用distutils也考虑使用多版本function。 它允许您安装任何单个软件包的多个版本。 这意味着如果您只想安装较新的版本,则不需要删除旧版本的软件包。
如果这是为了testing和/或开发目的, setuptools有一个develop命令,每次更改时都会更新(因此,每次更改时都不必卸载并重新安装)。 你也可以使用这个命令卸载软件包。
如果你确实使用了这个,那么你声明为脚本的任何东西都会作为一个滞留的文件被留下。
在Ubuntu 12.04中,我发现默认情况下唯一需要查看的地方就在这里
/usr/local/lib/python2.7/
只要删除相关的文件夹和文件,如果有的话!
我只是卸载了一个Python包,虽然我不确定我是否完美,但我相当有信心。
我开始获取所有与datesorting的python相关文件的列表,假定我的包中的所有文件将具有或多或less相同的时间戳,并且不会有其他文件。
幸运的是,我已经安装在/opt/Python-2.6.1
下的/opt/Python-2.6.1
; 如果我一直在使用我的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-xxx_blah-py2.6.egg-info
。
所以我刚刚删除这些。
以下是我如何得到datesorting的文件列表:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(顺便说一下,我认为这应该是GNU“find”;你在OS X上的风格不知道“-printf'%T @'”)
我一直在用。
对于Windows 7,
控制面板 – >程序 – >卸载
, 然后
select要删除的python包。
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 )
testing在Python 2.7.6,Ubuntu 14.04。
对于Windows中的Python:
python -m pip uninstall "package_keyword" uninstall **** (y/n)?