我不久前开始编程。我使用了一点 Python、Lua 和 Ruby。是否可以使用 py2exe、py2app 或 py2deb 将所有三个脚本编译成一个可执行文件?
如果没有,我应该使用哪一个来进行游戏开发,如果有人有任何类型的资源可以学习,我真的很介意学习更多。
不可以。可以使用语言的 JVM 版本来创建 JVM 类,然后将它们 JAR。除了 jRuby,我从来没有使用过它们中的任何一个。
为什么同时使用三种相似的脚本语言?这就像吃土豆泥和面包的意大利面。
将它们全部组合到一个可执行文件中很困难。将它们组合到一个应用程序中,并不难。
我们以 py2app 为例。它构建了一个 OS X 应用程序包——一个充满文件的目录。Frameworks
在子目录中有一个带有自定义标准库的完整 Python 解释器。您的应用程序的 Python 源代码(和/或 .pyc 字节码)和所有数据文件都在Resources
子目录中。最后,在 MacOS 子目录中,有两件事:一个标准python
存根可执行文件,它使用您的自定义标准库运行 Python,另一个使用您的应用程序名称的存根可执行文件,它使用您的自定义标准库运行 Python 并执行您的主脚本.
想象一下,你有一个用于 Ruby 和 Lua 的相同工具。
您可以非常轻松地构建一个应用程序包,将每个框架放入Frameworks
目录中,将所有三种语言的所有源代码和所有数据文件放入Resources
目录中,并将所有三个存根可执行文件放入MacOS
目录中。无论您的哪个脚本是主程序,您都只保留该脚本的存根可执行文件。
只要您的脚本知道如何找到 python、lua 和 ruby 存根可执行文件来启动其他脚本(您可以通过例如在主脚本开始时修改环境中的 PATH 来做到这一点),一切正常。
还有一个更简单的解决方案:py2app
(and ruby2app
)lua2app
分别对每个应用程序进行编译,然后将完整的应用程序打包到包中(例如,在Applications
目录下的Library
目录中)并以这种方式运行它们。不利的一面是,如果您有 20 个不同的 Python 脚本,您最终将获得 20 个完整的 Python 安装,这将是一个相当大的下载量。
但是您可以在两者之间进行折中:将所有 Python 应用程序合并到一个包中,将所有 Ruby 应用程序合并到另一个包中,并将所有 Lua 应用程序合并到另一个包中。
在实践中这样做的问题是您实际上没有用于 Ruby 和 Lua 的相同工具。你有不同的工具,可以构建不同的结构。而且您没有用于 Windows 的相同工具(py2exe
构建一个非常不同形状的结构,并使用非常不同的配置设置)。因此,如果您有 N 种语言和 M 个平台,您需要了解(最多)N*M 种不同结构的笛卡尔积。
而且您确实需要所有单独的工具。py2app
不能用于 Ruby 或 Lua 代码或 Windows 代码,因为它需要理解 Python 模块——包括 Python C 扩展模块,它必须在 Mach-O 级别以及 Python API 级别理解这些模块——在为了找出依赖关系并获取正确的文件,并找出将它们放在包中的正确位置,以便解释器可以找到它们,等等。
尽管如此,这绝对是可行的——我参与了两个项目,它们按照我上面描述的方式捆绑了用两种或三种不同脚本语言编写的多个脚本。