在过去的几年里,我用python编写了一个很好的小程序,现在我想分发它,但是我的第一次尝试没有遇到太多的热情,因为许多潜在的用户不喜欢下载和安装python以及运行我的应用程序所需的所有依赖关系的想法。冻结每个操作系统的python脚本
我环顾四周寻找一种解决方案,将代码编译成易于运行的东西,但我对所发现的内容并不满意。
我对冻结应用程序而不真正编译它的想法没有任何问题。这只是意味着最终用户将等待几秒钟来下载应用程序,并在他/她的硬盘上占用更多空间。
我的问题是找到一种方法来将所有应用程序打包到每个操作系统的可执行文件中(比如说,Windows,Mac,Linux--对于每个操作系统显然是不同的可执行文件),而无需安装虚拟机或葡萄酒或类似的选项。我强烈怀疑这是可能的,因为我看到一堆ren'py游戏打包完全符合我想打包应用程序的方式,但是我不知道如何获得与我的程序相同的结果。
示意图中,我的应用程序需要一个控制台才能运行,并包含一些自制包,numpy和matplotlib。它也有一个系统支持多种语言,动态地包括一个语言文件,覆盖以前的设置:
exec('from lang.%s import lang' % language)
我怀疑这可能会产生一些问题。最后,该程序需要几个文件夹来保存其设置,日志等在第一次运行,所以这些也应该包括在内。我的电脑运行ubuntu mate 16.10(x64),python版本是2.7,但是将来我打算将它翻译成python 3.所创建的可执行文件可以是单个重文件,其中包含几乎所有需要的文件或轻量文件,其他所有文件都可以在附近的文件夹中找到;我没有对一种解决方案或其他解决方案的偏好。
我知道这个问题不时出现,可能已经回答了,但这种问题的最后一次发现可以追溯到2014年,如果我们考虑如何快速地在这个领域的变化。
编辑:既然有似乎是我提出的,我能想到的设置了一些仿真器/包装/兼容层/不管运行冷冻不同操作系统的条件没有解决办法,但我不知道该怎么办。我在这里和那里看到,葡萄酒并不总是正常工作,并找不到任何东西在Linux上为Mac编译。据我了解,程序不需要32/64位系统的不同编译,但是如果有一种简单的方法来编译每种可能性,它都会很好。虚拟机仍然不行,现在我的磁盘上没有空间来建立两个或两个以上的虚拟机(这是ssd磁盘的巨大缺点......),更不用说支付操作系统许可证了每年使用几次来编译一个免费软件。
打包您的程序所需的所有文件/文件夹应该不成问题,大多数工具都支持该功能。我认为最大的障碍是交叉编译 - 据我所知,只能为您当前使用的平台生成可执行文件,因此您必须在Windows上冻结以获取Windows .exe并冻结到Linux得到一个linux可执行文件等 –
@Rawing如果我理解正确,ren'py似乎交叉编译python没有任何问题。我没有可能为每种可能的环境运行虚拟机,所以如果有另一种解决方案,它会很棒。 – GRB
如果您真的坚持不拥有虚拟机,您可以使用持续集成服务在各种操作系统中运行您的打包程序。 –