如何同时使用Python、Lua和Ruby?

我不久前开始学习编程。我使用一点 Python、Lua 和 Ruby。是否可能使用 py2exe、py2app 或 py2deb 将这三个脚本编译成一个可执行文件?

如果不行,那么我在游戏开发中应该使用哪一个工具?如果有任何学习资源,我真的很想学习更多。

点赞
用户240443
用户240443
  1. 不可以。可能可以使用语言的 JVM 版本来创建JVM类,然后将它们打包成 JAR 文件。除了 jRuby 之外,我从来没有使用过其他这些类似的语言。

  2. 为什么要同时使用三种相似的脚本语言呢?这就像同时吃意面、土豆泥和面包一样。

2013-11-08 00:32:12
用户908494
用户908494

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

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

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

您可以轻松地构建一个应用程序包,将每个框架放在“Frameworks”目录中,将所有三种语言的所有源代码和所有数据文件放在“Resources”目录中,并将所有三个存根可执行文件放在“MacOS”目录中。无论您的哪个脚本是主程序,只需保留该脚本的存根可执行文件即可。只要您的脚本知道如何找到 python、lua 和 ruby 存根可执行文件来启动其他脚本(这可以通过例如在主脚本开始时修改环境中的 PATH 来实现),一切都有效。

还有一个更简单的解决方案:分别将每个应用程序打包在一个应用程序包中(例如,在“Library”目录下的“Applications”目录中),然后以这种方式运行它们。缺点是如果您有20个不同的 Python 脚本,您将最终得到20个完整的 Python 安装程序包,这会变成一个非常大的下载。

但是您可以在其间找到一个折衷的办法:将所有 Python 应用程序合并到一个包中,将所有 Ruby 应用程序合并到另一个包中,将所有 Lua 应用程序合并到另一个包中。

在实践中这样做的问题在于,您实际上没有一个相同的 Ruby 和 Lua 工具;您有_build_不同的工具,这些工具构建了不同的结构。并且您在 Windows 中也没有一个相同的工具 (py2exe 构建的结构形状非常不同,并且使用非常不同的配置设置)。因此,如果您有 N 种语言和 M 种平台,则需要理解 N * M 种不同结构的笛卡尔积。

并且您确实需要所有单独的工具。py2app 不能用于 Ruby 或 Lua 代码或 Windows 代码,因为它需要理解 Python 模块——包括在 Mach-O 级别和 Python API 级别上理解 Python C 扩展模块——以便确定依赖项并获取正确的文件,并确定在应用程序包中将它们放在正确的位置,以便解释器可以找到它们等等。

尽管如此,这绝对可行——我曾经在两个项目上工作,这些项目在我上面描述的方式中打包了多个用两种或三种不同的脚本语言编写的脚本。

2013-11-08 00:38:13