我想知道是否有可能,或者是否有人有任何经验,将gekko优化包与pyinstaller编译成一个可执行文件。作为测试用例,我使用来自gekko优化网站(https://gekko.readthedocs.io/en/latest/examples.html)的HS71基准测试用例。我使用的是64位的windows10操作系统。这个测试用例可以在我的Spyder环境中正常运行。当使用remote=True时,可执行文件也可以正常运行。我已经将代码打包到一个exe中,并修改为在本地运行(m = GEKKO(remote=False)),但在尝试运行该exe时遇到错误。
使用以下命令成功创建应用程序: pyinstaller GekkoTest.spec
我已经修改了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重建”。
在实现此解决方案之后,可执行文件现在可以工作了。感谢大家的建议。
发布于 2021-02-15 23:19:42
“你只需要告诉PyInstaller包含gekko的数据文件。编辑你的规范,从顶部的PyInstaller.utils.hooks导入collect_data_files,将datas=[]参数设置为"datas=collect_data_files('gekko'),然后使用pyinstaller GekkoTest.spec重新构建。
https://stackoverflow.com/questions/66181211
复制相似问题