我们有一个用Octave编写的数学模型,我们希望在云中运行-也许是一个亚马逊网络服务EC2或ECS实例。这样做的原因是,我们希望从数据库(ElasticSearch)中输入数据,而不是依赖于一个人的机器来运行分析。我们还试图避免将m文件重写为Python或类似的代码。
我看过this question中的答案,发现很难相信没有一种更简单的方法可以将Octave脚本(包含多个文件)编译成可以在云中运行的独立程序。有没有人有这样做的经验?
发布于 2020-06-04 21:54:04
没有Octave工具可以做到这一点。但我不认为你真的需要它。与Ruby或Python等其他解释型语言一样,部署基于Octave的应用程序的典型方法是在将要运行该应用程序的计算机上安装Octave运行时(即Octave本身),然后将您的M文件集合部署到该计算机并让其运行这些文件。因为您可以控制您的EC2实例,所以这是可行的。
(有一些“冻结的”Python应用程序,它们通过捆绑的Python解释器或Matlab编译器提供完全打包的可部署应用程序,但没有Octave等效项。)
请注意,即使是编译的语言也可能需要安装支持的运行时。例如,C++需要C++运行时(即Windows上的Microsoft Visual C++ Redistributable,或者Linux上的GNU或CLANG C++库),Java需要C++,而“编译”的Matlab应用程序需要Matlab Runtime。
如果希望以单文件方式将应用程序传输到服务器进行部署,请将应用程序打包到ZIP文件中,将其复制到服务器,然后将其解压缩到安装位置。或者,您可以使用操作系统的本机包管理器将其打包,并让它声明对Octave的依赖。
你链接到的另一个问题中的“一个大的可安装包”方法是为了解决将Octave程序分发给非技术最终用户的问题,在程序作者不能控制的机器上。假设您的员工中有精通技术的人员,并且您控制着要部署到的云VM,因此您可能并不真的有相同的要求。
您还可以使用Docker并将您的应用程序+ Octave构建到Docker容器中,以实现完全自包含的部署。
https://stackoverflow.com/questions/62033825
复制相似问题