目前,我正在用我的应用程序部署一个完整的 python 发行版(原始的 python 2.7 msi)。这是一个用delphi制作的嵌入式Web服务器。
读到这里,我想知道是否可以在我的应用程序中嵌入必要的 python 文件,以减少加载文件并避免与多个 python 版本冲突。
我以前有使用python for delphi 的经验,所以我只需要知道是否只有使用发行版 + 自己的脚本运送 python dll + zip 才能工作(如果存在我必须知道的任何警告或我可以查看的示例)
目前,我正在用我的应用程序部署一个完整的 python 发行版(原始的 python 2.7 msi)。这是一个用delphi制作的嵌入式Web服务器。
读到这里,我想知道是否可以在我的应用程序中嵌入必要的 python 文件,以减少加载文件并避免与多个 python 版本冲突。
我以前有使用python for delphi 的经验,所以我只需要知道是否只有使用发行版 + 自己的脚本运送 python dll + zip 才能工作(如果存在我必须知道的任何警告或我可以查看的示例)
zipimport
应该对你很好——我不熟悉用于 Delphi 的 Python,但我怀疑它会禁用该功能(嵌入应用程序可以做到这一点,但这是一个不寻常的选择)。请记住,您可以压缩并直接导入的是 Python 编码的模块(或只是它们对应的.pyc
或.pyo
字节码)——DLL(即使重命名为.pyd
s;-)需要在磁盘上才能加载(所以如果你有一个 zip 文件,需要在应用程序启动时将其解压缩,例如到一个临时目录中)。
此外,您甚至不需要压缩所有模块,只需压缩您实际需要的模块(通过传递闭包)——您可以使用标准 Python 库的modulefinder模块轻松准确地找出这些模块。我刚刚指出的文档页面上的示例应该可以澄清一些事情。快乐的拉链!
对的,这是可能的。
我实际上是在 Python 中使用Zipimport library
. 实际上,我将每个.py
文件zip
以及这些脚本所需的配置或 xml 文件都包含在其中。
然后,我调用一个.command
针对__main__.py
类的文件,该类根据我的sys.argv
参数重定向到所需的脚本,这非常有用!