我可以使用zipimport来打包嵌入式Python吗?

2 投票
2 回答
575 浏览
提问于 2025-04-16 00:58

目前,我正在和我的应用程序一起部署完整的Python环境(原版的Python 2.7安装包)。我的应用是用Delphi制作的一个嵌入式网页服务器。

阅读了这个帖子后,我在想,是否可以把必要的Python文件嵌入到我的应用里,这样可以减少加载的文件数量,并避免不同版本的Python之间的冲突。

我之前有过使用Python for Delphi的经验,所以我只需要知道,单独发送Python的dll文件,加上打包的文件和我自己的脚本,这样是否可行(还有没有什么需要注意的地方,或者有没有示例可以参考)

2 个回答

0

是的,这是可能的。

我实际上正在用Python编写一个自动化脚本,使用的是Zipimport库。我把所有的.py文件以及这些脚本需要的配置文件或xml文件都放进了我的zip文件里。

然后,我调用一个.command文件,目标是一个__main__.py类,它会根据我的sys.argv参数来重定向到所需的脚本,这样非常有用!

3

zipimport 应该可以正常工作。我对 Python for Delphi 不太了解,但我怀疑它不会禁用这个功能(嵌入应用程序可以这样做,但这不是常见的选择)。记住,你可以直接压缩并导入的是用 Python 编写的模块(或者它们对应的 .pyc.pyo 字节码)——DLL 文件(即使它们被重命名为 .pyd)需要在磁盘上才能被加载(所以如果你有一个包含它们的压缩文件,应用程序启动时需要先解压到一个临时目录)。

而且,你甚至不需要压缩所有模块,只需要那些你实际需要的模块(通过传递闭包)——你可以很容易地找出这些模块是什么,使用标准 Python 库中的 modulefinder 模块。我刚才提到的文档页面上的示例应该能让事情更清楚。祝你压缩愉快!

撰写回答