Python 入口点使用示例
I发现设置工具的入口点: 引用:setuptools支持创建“插件”到可扩展应用程序和框架的库,方法是允许您在项目中注册可由应用程序或框架导入的“入口点” 但我还没有看到一个项目使用它们 有使用它们的项目的例子吗 如果没有,为什么不使用它们?有很多例子。例如,任何定义控制台脚本的项目都会使用它们。A给了你足够的浏览空间 我将重点介绍一个特定的示例(一个不在GitHub上的示例): Babel对两个控制台脚本都使用Python 入口点使用示例,python,hook,setuptools,Python,Hook,Setuptools,I发现设置工具的入口点: 引用:setuptools支持创建“插件”到可扩展应用程序和框架的库,方法是允许您在项目中注册可由应用程序或框架导入的“入口点” 但我还没有看到一个项目使用它们 有使用它们的项目的例子吗 如果没有,为什么不使用它们?有很多例子。例如,任何定义控制台脚本的项目都会使用它们。A给了你足够的浏览空间 我将重点介绍一个特定的示例(一个不在GitHub上的示例): Babel对两个控制台脚本都使用入口点,并为可翻译文本提取定义扩展点。见他们的: 像pip和zc.buildout
入口点
,并为可翻译文本提取定义扩展点。见他们的:
像pip
和zc.buildout
这样的工具使用console_脚本
入口点来创建命令行脚本(一个名为pybabel
,运行babel.messages.frontend
模块中可调用的main()
)
distutils.commands
入口点定义了运行setup.py
时可以使用的其他命令;这些可以在您自己的项目中使用,以便从安装脚本中调用Babel命令行实用程序
最后,但并非最不重要的一点是,它注册了自己的checker和extractor。babel.extractors
入口点由加载,使用,允许访问注册该入口点的所有已安装Python项目。以下代码在这些条目中查找特定的提取器:
try:
from pkg_resources import working_set
except ImportError:
pass
else:
for entry_point in working_set.iter_entry_points(GROUP_NAME,
method):
func = entry_point.load(require=True)
break
这允许任何项目注册额外的提取器;只需在setup.py中添加一个入口点,Babel就可以利用它。就是一个很好的例子。Sentry的作者甚至创建了一个名为django的包,用于将标准django管理命令转换为控制台脚本
try:
from pkg_resources import working_set
except ImportError:
pass
else:
for entry_point in working_set.iter_entry_points(GROUP_NAME,
method):
func = entry_point.load(require=True)
break