python之entry points
来源:互联网 发布:罗振宇说人工智能 编辑:程序博客网 时间:2024/06/01 10:48
python之entry points
(2013-09-05 15:38:53)转载▼
标签:
it
分类: pythonentry points是什么呢?貌似就是一个package通过setuptools注册的一个外部可以直接调用的接口。例如:
name='mypackage', entry_points={ 'mypackage.api.v1':[ 'databases=mypackage.api.v1.databases:main', ], )
在mypackage的setup.py里注册entry_points如下:
setup(
该setup()函数注册了一个entry point,属于mypackage.api.v1 group。
注意,如果多个其它不同的package利用mypacke.api.v1来注册entry point,那么我用mypackage.api.v1来访问entry point时,将会获取所有已注册过的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还是用entry point比较方便呢?
当然是entry point了,将这一类的entry point注册到同一个group中,然后通过该group就可以调用所有的这类接口了。
0 0
- python之entry points
- python之entry points
- Webpack之入口起点(Entry Points)学习笔记(2)
- python——gui之entry
- Python GUI 04----Entry
- pkg_resources----Entry Points为程序提供扩展点
- note: Actions entry points function of OVS datapath
- python syntax points
- webpack之entry
- Tkinter之Entry篇
- Scrum之Story Points
- Python-Tkinter的Entry详解
- Python零基础入门二十八之界面设计练习、Entry验证函数
- Tkinter教程之Entry篇
- Tkinter教程之Entry篇
- tkinter之entry和text
- webpack之旅02-entry
- Entry
- 关于/etc/rc.local与/etc/init.d
- 关于site域名后提示“危险网站”的公告
- UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
- 怎样实现不同楼栋RIME抄水表
- 跳槽
- python之entry points
- js 限制只能输入数字和一个小数,且第一位不能为小数
- 写给自己的 也希望看到的各位,跟我说说,我应该怎样选择
- 解决上传错误ERROR ITMS-90186和ERROR ITMS-90062
- VC6下采用ShellExecuteEx提升管理员权限
- 开发一个c++后台程序的大概步骤
- hdu5464(Clarke and problem)
- access xenserver outside of localhost
- Leetcode74: Best Time to Buy and Sell Stock III