如何删除用distutils安装的程序?

2024-05-08 03:53:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用setup.py安装了一个python应用程序:

#!/usr/bin/env python

from distutils.core import setup
from libyouandme import APP_NAME, APP_DESCRIPTION, APP_VERSION, APP_AUTHORS, APP_HOMEPAGE, APP_LICENSE

setup(
    name=APP_NAME.replace(" ","-").lower(),
    version=APP_VERSION,
    description=APP_DESCRIPTION,
    author="John G",
    author_email="xxx@gmail.com",
    url=APP_HOMEPAGE,
    license=APP_LICENSE,
    scripts=["youandme.py"],
    packages=["libyouandme"],
    data_files=[
        ('share/applications', ['youandme.desktop']),
        ('usr/share/icons/hicolor/16x16/apps', ['icons/hicolor/16x16/apps/you.png']),
        ('usr/share/icons/hicolor/22x22/apps', ['icons/hicolor/22x22/apps/you.png']),
        ('usr/share/icons/hicolor/48x48/apps', ['icons/hicolor/48x48/apps/you.png'])],
)

如何从我的ubuntu机器上删除这个应用程序?

我能用鼻子做这个吗?


Tags: appsnamefrompyimportyouapp应用程序
3条回答

因为运行pip uninstall <package>的pip 8.0.0在<package>是操作系统预先安装的(可能是python setup.py安装)时不起作用。

错误消息是:

Detected a distutils installed project ('<package>') which we cannot uninstall. The metadata provided by distutils does not contain a list of files which have been installed, so pip does not know which files to uninstall.

您需要使用OS包管理器来代替pip来卸载这些包。

所以在Ubuntu上:sudo apt-get remove python-<package>会删除它。

我发现有两个包有这个问题:httplib2six,上面的技巧帮助我克服了这个错误。希望其他人觉得这有用。

AFAIK only pip允许卸载python模块,因此如果没有安装它,可以使用

sudo easy_install pip

然后使用pip卸载模块

sudo pip uninstall <module_name>

其中module_name是在setup函数的name参数中传递的值。

编辑:刚刚看到您用“python-3.x”标记了您的问题,而且pip还没有3.x版本,因此如果您需要卸载python3.x模块,这个答案不合适。

安装checkinstall Ubuntu包。checkinstall监视安装过程并创建deb包。这允许您使用常规的包管理命令来删除软件。

首先,使用checkinstall重新安装候选python模块/包。将目录更改为包含候选python模块/包的setup.py文件的目录:

cd <PACKAGE_NAME>

然后:

sudo checkinstall -D --fstrans=no python setup.py install

这将创建一个.deb包,并再次安装python模块。 我们会问你几个问题。默认答案应该没问题。 (但是,当setup.py文件位于python模块的子目录(例如“source”子目录)中时,可以更改.deb包的“名称”。)

(saved.deb包现在捕获了python包自身的安装方式,dpkg可以删除python包。)

然后立即卸下模块:

sudo dpkg -r <PACKAGE_NAME>

另外,我听说有些安装程序与checkinstall不兼容,尽管我自己从未遇到过任何问题。

相关问题 更多 >