Run setup.py
The console_scripts
and gui_scripts
入口点创建包装可调用对象的独立脚本。这coverage https://pypi.python.org/pypi/coverage包就是一个很好的例子。为了方便起见,它有一个入口点来创建包装器脚本。例子setup.py
创建控制台脚本的片段:
setup(
...
entry_points = {
'console_scripts': [
'script_name = package.module:function'
]
}
)
可以通过以下方式仅将脚本安装到指定目录setup.py
。现有脚本不会被覆盖,除非--force
论证通过。
python setup.py install_scripts --install-dir /some/alternate/location
对于插件,入口点作为元数据存储在通常与包一起安装的 Egg 中。示例插件入口点:
setup(
...
entry_points = {
'group_name': [
'plugin_name = package.module:function'
]
}
)
可以通过以下方式仅将包的元数据(包括任何入口点)安装到指定目录setup.py
.
python setup.py egg_info --egg-base $PYTHONPATH
滚动你自己的
If setup.py
无法运行来写入egg元数据,完全可以自己编写,因为它只是目录中的文本文件。基于上述入口点的示例元数据:
# $PYTHONPATH/entry_points.egg-info/entry_points.txt
[group_name]
plugin_name = package.module:function
要测试入口点查找:
import pkg_resources as pkg
for entry_point in pkg.iter_entry_points('group_name'):
plugin_name = entry_point.name
plugin_module_name = entry_point.module_name
plugin_callable = entry_point.load()
# do something with plugin