部署python应用程序

部署python应用程序,python,deployment,Python,Deployment,是否可以部署python应用程序,这样您就不必发布源代码,也不必确保客户安装了python 我在想,也许有一些安装过程可以从.pyc文件和包含解释器的共享库或类似的东西运行python应用程序 基本上,我渴望获得Python等语言的开发优势——高生产率等。但我不太明白如何专业地将其部署到客户那里,因为您不知道机器是如何设置的,而且您肯定无法提供源代码 用python开发的专业软件公司如何做到这一点(或者答案可能是他们没有做到)?用python构建web应用程序。然后全世界都可以通过零安装的浏览器

是否可以部署python应用程序,这样您就不必发布源代码,也不必确保客户安装了python

我在想,也许有一些安装过程可以从.pyc文件和包含解释器的共享库或类似的东西运行python应用程序

基本上,我渴望获得Python等语言的开发优势——高生产率等。但我不太明白如何专业地将其部署到客户那里,因为您不知道机器是如何设置的,而且您肯定无法提供源代码


用python开发的专业软件公司如何做到这一点(或者答案可能是他们没有做到)?

用python构建web应用程序。然后全世界都可以通过零安装的浏览器使用它。

好吧,这取决于你想做什么。如果说“不发布源代码”,你的意思是“客户不应该以任何方式访问源代码”,那么,你正在打一场败仗。毕竟,即使是用C编写的程序也可以进行反向工程。如果你担心有人会偷你的东西,让他们签订合同,如果有麻烦就起诉他们


但是,如果您的意思是“客户不应该关心python文件,并且不能随意访问它们”,那么您可以使用类似于将python应用程序转换为可执行文件的解决方案。

是的,可以制作安装包。查找
py2exe
cx\u freeze
和其他

不,不可能保证源代码完全安全。反编译总是有方法的。
如果有人愿意,可以从
.pyc
文件中获取原始源代码。代码混淆会使代码更难处理

  • 你在法律上保护你的源代码,而不是在技术上。分发py文件真的没什么大不了的。这里唯一的技术解决方案是不发送您的程序(这在最近真的变得越来越流行,因为软件是通过互联网提供的,而不是更经常地在本地完全安装)

  • 如果您不希望用户必须安装Python,但希望运行Python程序,则必须捆绑Python。我觉得你不这么做很奇怪。Java程序必须捆绑或预测JVM的存在。C程序必须捆绑或预测libc的出现(通常是后者),等等。使用您需要的东西并没有什么不妥当的地方

  • 专业的Python桌面软件捆绑Python,或者通过py2exe/cx_-Freeze/一些做同样事情的内部东西,或者通过嵌入Python(在这种情况下,Python作为库而不是可执行文件出现)。前一种方法通常更强大、更健壮


  • 我很惊讶以前没有人提到这一点,但这似乎是解决这个问题的可行办法。它将把您的Python代码和它转换成与CPython兼容的C代码。由于它将被编译为本机机器代码,而不仅仅是Python字节代码,因此您还获得了一个小的速度提升(上次我检查时为25%)。您仍然需要确保用户安装了Python(或者将其作为推给用户处理的先决条件,或者将其作为安装过程的一部分捆绑)。此外,您确实需要在纯Python中至少有一小部分应用程序:主函数的钩子

    所以你需要一些基本的东西,比如:

    import cython_compiled_module
    
    if __name__ == '__main__':
        cython_compiled_module.main()
    
    但这实际上没有泄露任何实施细节。我认为使用Cython应该满足问题中的标准,但它也增加了用C编译的复杂性,这失去了Python易于跨平台的特性。这是否值得,取决于你


    正如其他人所说的,即使最终编译的C代码也可以通过一点努力进行反编译,但它可能更接近您最初希望的混淆类型。

    PS我知道py2exe和所有这些东西,但它似乎是一种黑客类型的解决方案,例如,每次编写appRead时都必须在整个解释器中编译,这有点不雅观。请阅读这个问题以获得启发:是否有其他类似的语言可以编译为本机二进制?也许是D?如果有一种语言能够绑定到一个流行的GUI包,比如widgets或qt,那就太好了。我们也没有开发web应用程序——如果是这样的话easy@Hiett:越来越多以前只能作为“桌面”软件使用的软件现在可以作为Web软件使用。你确定你所做的不能作为一个网络应用程序吗?哈哈。。。有多少人认为只有客户端——如果你用Python开发一个web应用程序(或任何服务器端应用程序),并想出售它,但不想发布整个源代码,你会怎么做?是否编写另一个web(服务器)应用程序?来吧…不是真的抵抗-只是试着思考一下选项,特别是什么对客户来说是最轻松的。捆绑销售是指为客户的平台提供python安装程序,并告诉他们在运行我们的代码之前安装它吗?有些情况下,从技术角度来看,您必须小心保护源代码,例如国防部门。@Hiett,我相信您的评论“在某些情况下,您必须从技术角度谨慎保护资源,例如国防部门。“这是错误的和危险的。发送程序试图隐藏源代码是一个失败的建议。您的非源代码发行版始终可以被反编译、编辑或重用,而反编译在Python中尤其微不足道。在国防等安全关键行业,更重要的是不要有这样的安全漏洞。唯一的技术解决方案是根本不将程序提供给任何人。@Hiett:当你使用类似py2exe的东西时,你并不是在“要求用户安装Python”。你在问