python之entrypoints python entry point

entry points是什么呢?貌似就是一个p————ackage通过setuptools注册的一个外部可以直接调用的接口。例如:
在mypackage的setup.py里注册entry_points如下:setup( name='mypackage', entry_points={ 'mypackage.api.v1':[ 'databases=mypackage.api.v1.databases:main', ], )该setup()函数注册了一个entry point,属于mypackage.api.v1 group。注意,如果多个其它不同的package利用mypacke.api.v1来注册entrypoint,那么我用mypackage.api.v1来访问entry point时,将会获取所有已注册过的entrypoint。
python之entrypoints python entry point
将该包install后,在本机上的任何程序可以利用以下几种方法调用该entry point方法一:使用pkg_resources类用调用
import pkg_resourcesdef run_entry_point(data):    group = 'mypackage.api.v1'    for entrypoint in pkg_resources.iter_entry_points(group=group):        # Grab the function that is the actual plugin.        plugin = entrypoint.load()        plugin(data)
方法二:
from pkg_resources import load_entry_pointload_entry_point('mypackage', 'mypackage.api.v1', 'database')()
方法三:利用stevedore
from stevedore import extensiondef test_detect_plugins():    em = extension.ExtensionManager('mypackage.api.v1')    names = sorted(em.names())    assert names == ['t1', 't2']    em1 = extension.ExtensionManager('mypackage.api.v1')    eps1 = [ext.plugin for ext in em1]  #plugin是被映射的函数,用于调用    em1 = extension.ExtensionManager('mypackage.api.v1')
eps1 = [ext.entry_point for ext in em1]
为什么需要entry point,直接用import调用不是一样吗?如果从单个package安装中看,的确与import没什么两样,但是,如果你有一个工具,需要调用所有已安装package的某一类接口,你是一个一个去import还是用entrypoint比较方便呢?当然是entry point了,将这一类的entrypoint注册到同一个group中,然后通过该group就可以调用所有的这类接口了。


  

爱华网本文地址 » http://www.aihuau.com/a/25101015/262659.html

更多阅读

pythonwith关键字用法 python with用法

本人尚未理解,暂贴于此,待日后慢慢咀嚼。with从Python 2.5就有,需要from __future__ importwith_statement。自python2.6开始,成为默认关键字。在What's new in python2.6/3.0中,明确提到:The 'with'statement is a control-flowstructure

学好Python的十种境界 学生最喜欢的十种教师

1)学好python的第一步,就是马上到www.python.org网站上下载一个python版本。我建议初学者,不要下载具有IDE功能的集成开发环境,比如Eclipse插件等。2)下载完毕后,就可以开始学习了。学习过程中,我建议可

perl和python各自擅长什么领域? 简历擅长领域怎么写

设计一个语言的初始目的决定了该语言将会内建什么功能perl初始是Larry为了格式化处理文本而创建的所以内建了正则看python居然内建一个复数型别,我猜测Guido最初一定是为了数值计算而创建了pythonso,perl擅长文字处理,python擅长数值处

Python中的高级数据结构 python的数据结构

本文由 伯乐在线 - 熊崽Kevin 翻译自 pypix.com。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。数据结构数据结构的概念很好理解,就是用来将数据组织在一起的结构。换句话说,数据结构是用来存储一系列关联数据的东西。在Python

Python 基础教程 | w3cschool菜鸟教程 w3cschool菜鸟教程

Python 简介 ?Python 基础教程Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Pu

声明:《python之entrypoints python entry point》为网友初夏微凉分享!如侵犯到您的合法权益请联系我们删除