使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测试的,因为我不写 另一件事。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java testNG优先级和依赖性   java JPQL:以下WHERE子句使用继承时出现问题   java是否可以在JTable渲染器中进行查询?   java如何在javascript中向url添加变量并使用@PathVariable获取   在外部jframe中显示java控制台   java I无法连接到IBM MQ的QM错误2035 MQRC\u未授权   apache zookeeper如何解决Storm应用程序在本地集群中运行时出现的错误“java.net.ConnectException:连接被拒绝:connect”?   读取第一行的java文本文件具有键和第二行前进值   java在哪个线程池中affinityRun提交任务?如何配置线程数?   Java拆分字符串正则表达式:前导空格   如何在Java中读取Pop3服务器中的入站电子邮件   带/不带布局管理器的swing Java定位GUI组件   在Spring Webflux中使用域设置java多会话ID   http Java web将其内容刮除,但只刮除正文样式,然后不退出并永远运行   java图形绘制组件和循环故障