如何卸载 setuptools 插件?
How do I uninstall a setuptools plugin?
我的包使用了一些入口点 point
,如下所示:
subscribers = {
entry_point.name: entry_point.load()
for entry_point in pkg_resources.iter_entry_points('point')
}
__all__.extend(list(subscribers.keys()))
我曾经有一个模块,它定义了一个 DummySubscriber
,里面有这段代码
setup.py
文件
entry_points={
'point': [
'DummySubscriber = dummy.dummy:DummySubscriber',
…
或类似的。
现在每当我 iter_entry_points('point')
我也得到这个插件(或 class),尽管包已经被删除(源已经消失并且 Anaconda 安装目录中没有任何东西。我在不知道这个插件是如何存在的。
我已经搜索了整个anaconda安装目录,但什么也没找到。
如何删除它?
如评论中所述,如果加载了入口点,您可以通过调用 pkg_resources
实用程序来跟踪它们:
In [1]: import os
In [2]: import pkg_resources
In [3]: print(os.linesep.join(('{}: {}'.format(ep.name, ep.dist.egg_info) for ep in pkg_resources.iter_entry_points('point'))))
DummySubscriber: /home/share/miniconda3/envs/torch/lib/python3.6/site-packages/dummy_subscriber-0.0.2-py3.6.egg/EGG-INFO
这将在磁盘上打印入口点的包来源。它要么是 *.dist-info
目录,要么(如您的情况)存档(egg、wheel、zipfile 等)。无论哪种方式,您都将获得软件包的名称和版本(在本例中为 dummy_subscriber==0.0.2
),然后您可以尝试使用用于安装的软件包管理器卸载它们(pip
、easy_install
, 系统包管理器).
我的包使用了一些入口点 point
,如下所示:
subscribers = {
entry_point.name: entry_point.load()
for entry_point in pkg_resources.iter_entry_points('point')
}
__all__.extend(list(subscribers.keys()))
我曾经有一个模块,它定义了一个 DummySubscriber
,里面有这段代码
setup.py
文件
entry_points={
'point': [
'DummySubscriber = dummy.dummy:DummySubscriber',
…
或类似的。
现在每当我 iter_entry_points('point')
我也得到这个插件(或 class),尽管包已经被删除(源已经消失并且 Anaconda 安装目录中没有任何东西。我在不知道这个插件是如何存在的。
我已经搜索了整个anaconda安装目录,但什么也没找到。
如何删除它?
如评论中所述,如果加载了入口点,您可以通过调用 pkg_resources
实用程序来跟踪它们:
In [1]: import os
In [2]: import pkg_resources
In [3]: print(os.linesep.join(('{}: {}'.format(ep.name, ep.dist.egg_info) for ep in pkg_resources.iter_entry_points('point'))))
DummySubscriber: /home/share/miniconda3/envs/torch/lib/python3.6/site-packages/dummy_subscriber-0.0.2-py3.6.egg/EGG-INFO
这将在磁盘上打印入口点的包来源。它要么是 *.dist-info
目录,要么(如您的情况)存档(egg、wheel、zipfile 等)。无论哪种方式,您都将获得软件包的名称和版本(在本例中为 dummy_subscriber==0.0.2
),然后您可以尝试使用用于安装的软件包管理器卸载它们(pip
、easy_install
, 系统包管理器).