有没有比JVM好的选项其他用于打包Python或Ruby应用程序以便分发给最终用户?具体来说,我正在寻找能够编写和测试用Ruby或Python编写的基于Web的应用程序,以及后端数据库的方法,然后我可以将它包含在一组方便的独立于平台的软件包中(某种类型)在Windows,Linux,OS X和FreeBSD上部署?
编辑:“基于网络的应用程序”的含义是最终用户可以在其公司的服务器上运行的webapp,为最终用户提供内部Web服务。有很多方法可以通过JPython或JRuby在JVM上执行此操作,但我很好奇是否存在具有备用VM或解释器的非JVM路由。
答案 0 :(得分:4)
对于Python,有distutils,Ars Technica在包装跨平台PyQt应用程序上有pretty good article。这将使您进行设置,这样您至少可以将内容捆绑到可以部署在多个平台上的软件包中,这对于免费软件来说是合理的。
如果您尝试分发专有代码,我不确定这是一种比使用JVM更好的分发方式。
答案 1 :(得分:2)
我不确定我在这里了解你。您想要创建要发送给最终用户的基于Web的应用程序吗?我不确定如何解释:
我无法与python说话,但您可以使用Shoes为Ruby创建和打包自定义GUI(跨平台)。为了打包基于Web服务器的/浏览器GUI应用程序,我认为Ruby on Rails社区已经为此构建了一些工具 - 可能是Capistrano - 但是我再也没有做过很多RoR开发。
答案 2 :(得分:1)
您不能以一般的跨平台方式严格执行此操作(创建单个安装程序/可执行文件),因为不同的平台使用不同的可执行格式。 JVM依赖于目标计算机上已经安装了特定于平台的JVM;如果安装了 not ,那么除非以特定于平台的方式安装JVM,否则JAR将无法运行。也许更重要的是,任何依赖二进制扩展的第三方Python包都不能很好地与Jython一起使用,除非在Jython版本中特别发布,这是不寻常的。 (我认为类似的情况适用于Ruby包,虽然我没有直接的知识,甚至Ruby包使用二进制扩展的常见程度也是如此....)你将能够使用整个Java范围库,但很少有Python / Ruby库。值得注意的是,JVM版本的语言往往落后于标准版本,提供较少的语言功能和较少的错误修正。
如果您的代码是纯Python,那么它已经是跨平台的,只要目标机器已经安装了Python,就像Java一样......但至少在Windows中,假设安装了Python是不太安全的而不是假设安装了Java。第三方元素(数据库等)也可能是特定于平台的二进制文件。用户对合理安装过程的期望在不同平台之间也存在很大差异 - 如果您的应用使用第三方库或工具,您最好为Windows用户包含所有这些,但* nix用户往往更容忍下载依赖。 (但是,对包管理器自动处理的期望越来越高......)
真的,如果这是一个大型应用程序堆栈,并且您希望能够拥有几乎可以部署在任何服务器上的插件包,最简单的方法可能是将其作为完整的VMWare虚拟机进行分发机器 - 播放器软件是免费的(至少适用于Windows和* nix,但我也认为适用于Mac),它允许您创建一个专门为您的应用程序完全配置的专用Linux / BSD系统。 (我说Linux / BSD,因为那时你不需要担心操作系统许可费......)
(如果它是一个较小的应用程序,您希望允许在客户端的现有Web服务器上运行,那么我怀疑跨操作系统兼容性不会比跨Web服务器兼容性更令人担忧 - 而Apache 做< / em>有一个Windows版本,绝大多数Windows Web服务器都运行IIS,并且只有一个软件包分发(甚至单个版本的应用程序)与这两个Web服务器兼容,这可能是不切实际的。)
答案 3 :(得分:1)
您可以将应用程序分发为虚拟机,也可以创建包含所有依赖项的安装程序,例如GitHub为其内部部署版本所做的。
答案 4 :(得分:0)
试试https://packager.io/,如果您的代码是公开的,则免费。
引用他们的网站:
分发和安装现代Web应用程序很痛苦。 我们会自动打包它们,因此您不必这样做。 Packager.io是一个 自动将您的应用程序打包为DEB或RPM的服务 包,用于许多目标分发。
目前,您可以打包用Ruby,NodeJS或 去。
流程如下:
- 注册您的GitHub帐户。
- 启用您要打包的某个应用程序。
- 每次将新代码推送到GitHub存储库时,都会在我们的服务器上启动构建。您也可以从用户界面手动启动构建。
- 在构建过程中,您的代码被提取,并运行一个buildpack列表,它负责获取应用程序所需的所有依赖项,然后生成一个DEB或RPM包,并托管在您自己的APT中或YUM存储库。
- 您现在可以登录您的服务器,并使用简单的apt-get安装或yum install安装您的应用程序。
用法就像这样
my-app run ruby -v
my-app run rake db:migrate
my-app run console
#Inspect your application's logs:
my-app logs
#Set configuration variables for your application:
my-app config:set DATABASE_URL=...
#Start/Stop/Restart the application, in a distribution-independent way:
my-app start|stop|restart [web|worker]