python如何导入模块 zip_Python zipimportx包_程序模块 - PyPI - Python中文网

这个包旨在加速从zipfiles导入冻结的python应用程序(以及

假设zipfile不会改变的其他场景

标准zipimport模块不可用的快捷方式。

它导出了一个有用的名字“zipimporter”,这是一个替代品

对于标准的Zipimporter类。替换内置的zipimport机制

使用zipimportx,请执行以下操作:import zipimportx

zipimportx.zipimporter.install()

在没有额外工作的情况下,您可能已经发现导入时有一个小的加速

从拉链里拿出来的。因为zipimportx假设zipfile不会更改或

丢失,它比标准的stat()调用和完整性检查更少

Zipimport实现。

为了进一步加快ZipFile的加载速度,可以预先计算ZipImport

“目录信息”字典并将其存储在单独的索引文件中。这个

将减少从zipfile解析信息所花费的时间。创建

这样的索引文件:from zipimportx import zipimporter

zipimporter("mylib.zip").write_index()

这将创建包含预解析zip file的文件“mylib.zip.idx”

目录信息。具体来说,它将包含一个编组字典

对象的结构与zipimport中的结构相同。

在我的测试中,使用这些索引可以通过

在Linux上是3倍,在Windows上是5倍。

要进一步加速加载模块集合,可以“预加载”

直接包含在索引中的实际模块数据。这使得

多个模块的数据将加载到单个顺序读取中,而不是

需要对每个模块进行单独的读取。这样预加载模块数据:from zipimportx import zipimporter

zipimporter("mylib.zip").write_index(preload=["mymod*","mypkg*"])

“preload”列表中的每个条目都是一个文件名模式。来自zipfile的文件

与这些模式匹配的文件将在zipfile第一次加载时预加载

可用于导入。你可能想把它们从

为了节省空间。

最后,可以将zipfile转换为内联python代码并包括

直接在冻结的应用程序中的代码。这可以模拟效果

在sys.path上设置zipfile,同时在导入期间避免任何fie io

过程。要获取必要的源代码,请执行以下操作:from zipimportx import zipimporter

code = zipimporter("mylib.zip").get_inline_code()

最后,值得重新迭代这个模块所做的大假设:

zipfile决不能更改或丢失。如果索引中的数据没有

反映zipfile的实际内容,导入将在未指定的

可能还有一些荒谬的方式。

还要注意,这个包只使用内置模块。引导

zipfile导入对于冻结的应用程序,可以内联此模块的代码

直接进入应用程序的启动脚本。只是做些类似的事情

这在您的构建过程中:import zipimportx

import inspect

SCRIPT = '''

%s

zipimporter.install()

import myapp

myapp.main()

''' % (inspect.getsource(zipimportx),)

freeze_this_script_somehow(SCRIPT)

zipimportx.zipimporter("path/to/frozen/library.zip").write_index()

欢迎加入QQ群-->: 979659372

group.png

推荐PyPI第三方库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值