【问题标题】:Add entry_points to setuptools in package being install将 entry_points 添加到正在安装的包中的 setuptools
【发布时间】:2021-07-20 16:22:25
【问题描述】:

我有一个 python 包fsspec。这个库提供了一种注册外部文件系统的方法(backend integration)。注册所需文件系统的一种方法是将其添加到 setuptools 中的 entry_points。

为了完成任务,我们可以在 setup.py 中手动添加 entry_points,然后安装包。但我正在寻找的是一种以编程方式在 fsspec 包的安装前/后安装入口的方法。

【问题讨论】:

    标签: python setuptools entry-point fsspec


    【解决方案1】:

    我不相信有一种简单的方法可以更新通常在软件包安装期间写入系统的元数据。深入了解setuptoolsimportlib.metadata 的代码可能会告诉您如何操作。元数据暴露的Distribution 对象可能可以在内存中进行编辑。 该方法的要点是,fsspec 不需要导入任何东西(除了importlib.metadata 本身)就可以知道有哪些额外的实现可用。

    但是,使用fsspec.register_implementation 可能已经够用了,它是在运行时动态完成的。唯一的缺点是,您的包将需要被导入,并且在您尝试访问它提供的协议之前调用的函数

    【讨论】:

    • 我不希望用户在尝试访问协议(即 register_implementation 流)之前导入并调用该函数。我想限制用户编写多行代码。就我而言,entry_points 更有意义。
    • 好的,所以如果您找到一种以编程方式注册入口点的方法,请在此处编辑,我也有兴趣了解。
    猜你喜欢
    • 2010-09-19
    • 2016-06-20
    • 2014-04-07
    • 2021-12-18
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多