使setup.py加载中指定的入口点更快
fastentrypoints的Python项目详细描述
在setup.py中使用entry_points可以使脚本真正启动 因为它导入pkg_resources很慢,这是一件可怕的事情 如果你想让你的小脚本执行或多或少的瞬间。 检查一下:https://github.com/pypa/setuptools/issues/510
在setup.py文件中导入fastentrypoints将生成脚本 看起来像这样:
# -*- coding: utf-8 -*-importreimportsysfrompackage.moduleimportentry_functionif__name__=='__main__':sys.argv[0]=re.sub(r'(-script\.pyw?|\.exe)?$','',sys.argv[0])sys.exit(entry_function())
这是直接从车轮上撕下来的,而且比 不管普通控制台脚本做什么。
注意:
This bug in setuptools only affects packages built with the normal setup.py method. Building wheels avoids the problem and has many other benefits as well. ^{tt3}$ simply ensures that your user scripts will not automatically import pkg_resources, no matter how they are built.
用法
要使用FastEntryPoints,只需将FastEntryPoints.py复制到项目中 文件夹与setup.py位于同一目录中,并且import fastentrypoints 在setup.py文件中。这个猴子补丁 setuptools.command.easy_install.ScriptWriter.get_args()在 background,它反过来生成简单的输入脚本(比如 (上图)安装软件包时。
如果将fastentrypoints作为模块安装,则可以使用fastep 可执行文件,它将把fastentrypoints.py复制到working中 目录(或作为参数提供的目录列表)和 将include fastentrypoints.py附加到MANIFEST.in文件,然后 将导入语句添加到setup.py可从PYPI获得。
因为setuptools必须 把它进口去工作,所以是鸡蛋。正确的?幸运的是,脚本很小 将这个60行文件复制到 文件夹。如果要分发,请确保将其添加到manifest.ini 关于皮皮。
或者,如果您不想提供代码,可以 使用安装脚本中的easy_install从pypi安装:
try:importfastentrypointsexceptImportError:fromsetuptools.commandimporteasy_installimportpkg_resourceseasy_install.main(['fastentrypoints'])pkg_resources.require('fastentrypoints')importfastentrypoint
如果有些地方效果不好,请告诉我我已经 到目前为止,大部分是用console_scripts测试的,因为我不写 另一件事。