使用 Pyinstaller 编译 Gekko

问题描述

我想知道是否有可能,或者是否有人有任何经验,将带有 pyinstaller 的 gekko 优化包编译为 exe。作为测试用例,我使用了来自 gekko 优化网站 (https://gekko.readthedocs.io/en/latest/examples.html) 的 HS 71 Benchmark 用例。我使用的是 64 位 Windows 10 操作系统。这个测试用例在我的 Spyder 环境中正确运行。当 remote=True 时,exe 也能正确运行。我已将代码打包成 exe 并进行修改以在本地运行 (m = GEKKO(remote=False)),并且在尝试运行 exe 时遇到错误。

使用以下命令成功创建应用程序: pyinstaller GekkoTest.spec

我已修改规范文件以包含隐藏的导入“gekko”

运行生成的可执行文件时,它失败并显示未找到 results.json 文件的错误。我已经验证在应用程序执行期间没有在 tmp 目录中创建该文件(以及其他一些文件)(我将在 spyder 中运行时创建的文件与通过运行可执行文件创建的文件进行了比较)。我认为 Gekko 优化使用 C/fortran 代码来运行算法,因为它们不是 Python 原生的。找到优化问题的解决方案后,将其写入json文件并重新加载到python中。我的猜测是 pyinstaller 在创建其可执行文件时不包括一些必需的文件。

对此问题的任何建议将不胜感激。谢谢。

更新: “您只需要告诉 PyInstaller 包含 Gekko 的数据文件。编辑您的规范,将 from PyInstaller.utils.hooks import collect_data_files 放在顶部,将 datas=[] 参数设置为“datas=collect_data_files('gekko'),然后使用 pyinstaller GekkoTest.spec 重建。” - 来自 pyinstaller google group 的 bwoodsend

实施此解决方案后,可执行文件现在可以运行了。谢谢大家的建议。

解决方法

“你只需要告诉 PyInstaller 包含 Gekko 的数据文件。编辑你的规范,从 PyInstaller.utils.hooks import collect_data_files 在顶部,将 datas=[] 参数设置为“datas=collect_data_files('gekko') 然后使用 pyinstaller GekkoTest.spec 重建。” - 来自 pyinstaller google group 的 bwoodsend

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...