python - 怎么一起用​​啊!? Python、Lua 和 Ruby?

标签 python ruby lua 2d-games

我不久前才开始编程。我使用了一些 Python、Lua 和 Ruby。是否可以使用 py2exe、py2app 或 py2deb 将所有三个脚本编译为一个可执行文件?

如果没有,我应该使用哪一个来进行游戏开发,如果有人有任何类型的资源可以学习,我真的很介意学习更多。

最佳答案

将它们全部组合成一个可执行文件是很困难的。将它们组合成一个应用程序,并不难。

我们以 py2app 为例。它构建了一个 OS X 应用程序包——一个充满文件的目录。 Frameworks 子目录中有一个完整的 Python 解释器和自定义标准库。您的应用程序的 Python 源代码(和/或 .pyc 字节码)和所有数据文件都位于 Resources 子目录中。最后,在 MacOS 子目录中,有两个东西:一个标准的 python stub 可执行文件,它使用您的自定义标准库运行 Python,另一个 stub 可执行文件具有您的应用程序的名称,它使用您的应用程序运行 Python。自定义标准库并执行您的主脚本。

假设您有一个用于 Ruby 和 Lua 的相同工具。

您可以非常轻松地构建一个应用程序包,将每个框架放入 Frameworks 目录中,将所有三种语言的所有源代码以及所有数据文件放入 Resources 中 目录,并将所有三个 stub 可执行文件放入 MacOS 目录中。无论哪一个脚本是主程序,您都只需保留该脚本的 stub 可执行文件。

只要您的脚本知道如何查找 python、lua 和 ruby​​ stub 可执行文件来启动其他脚本(您可以通过修改主脚本开头的环境中的 PATH 来实现),一切都可以有效。

还有一个更简单的解决方案:py2app(以及 ruby2applua2app)单独安装每个应用程序,然后打包完整的应用程序在 bundle 内(例如,在 Library 目录下的 Applications 目录中)并以这种方式运行它们。缺点是,如果您有 20 个不同的 Python 脚本,那么您最终将需要 20 个完整的 Python 安装,这会是一个相当大的下载量。

但是您可以中间折衷:将所有 Python 应用程序合并到一个 bundle 中,将所有 Ruby 应用程序合并到另一个 bundle 中,将所有 Lua 应用程序合并到另一个 bundle 中。

在实践中这样做的问题是,您实际上没有针对 Ruby 和 Lua 的相同工具;你有不同的工具,可以构建不同的结构。而且您没有适用于 Windows 的相同工具(py2exe 构建了形状非常不同的结构,并使用非常不同的配置设置)。因此,如果您有 N 种语言和 M 种平台,您需要了解(最多)N*M 种不同结构的笛卡尔积。

而且您确实需要所有单独的工具。 py2app 不能在 Ruby 或 Lua 代码或 Windows 代码上使用,因为它需要理解 Python 模块——包括 Python C 扩展模块,它也必须在 Mach-O 级别理解这些模块就像在 Python API 级别一样,为了找出依赖关系并获取正确的文件,并找出将它们放入包中的正确位置,以便解释器可以找到它们,等等。

不过,这绝对是可行的 - 我已经参与了两个项目,这些项目捆绑了用两种或三种不同脚本语言编写的多个脚本,完全按照我上面描述的方式。

关于python - 怎么一起用​​啊!? Python、Lua 和 Ruby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849506/

相关文章:

python - 导出 .eps 文件时在 Matplotlib 中转换文本

ruby-on-rails - 如何在 Rails 中正确使用基本作用域

ruby - 按条目属性对数组进行排序,并可选择分组

ruby-on-rails - 用于 postgresql 的 Ruby on Rails : How can I edit database. yml?

lua - 在Lua中将十六进制转换为十进制保留小数部分

python - 什么是分布式锁,为什么要使用它?

Python-socket.error : Cannot assign requested address

lua - lua中一个散列内有多个散列

python - 如何在 Google Colaboratory 中导入和读取一个 shelve 或 Numpy 文件?

string - gsubbing 一个字符串,其模式包含 Lua 中的换行符