如何将Python部署给Windows用户?

25
我即将推出一个beta应用程序,它有创建Python自定义集成脚本的选项。
该应用程序将针对Mac OS X和Windows,并且我的问题在于Windows上通常没有安装Python。
我的实际方法是静默运行Python 2.6安装程序。但是,我面临的问题是默认情况下它未激活,并且在使用命令行选项时路径未设置。我担心如果先安装了Python并升级到新版本,这可能会破坏其他东西......
因此,我想知道如何干净地完成这个过程。如果我复制整个Python 2.6目录并将其放在我的应用程序的子目录中并在那里安装所有内容,这样可以吗?或者使用virtualenv可以运行不同版本的Python(如果已经在计算机上安装了Python)。
我之前也尝试过嵌入Python DLL,发现很容易但失去了调试的能力,所以我转而使用命令行插件。
我从命令行执行插件并读取STDOUT和STDERR输出。该应用程序是使用Delphi / Lazarus制作的。我安装了其他模块,例如JSON和RPC客户端,Win32com,ORM等。我使用bitrock创建安装程序。

更新:最终用户是小型企业所有者,Python脚本由开发人员制作。我希望避免在部署过程中增加任何额外步骤,因此我希望实现完全集成的设置。


1
你的应用程序README中有一行说要下载并安装Python 2.6,这有什么问题吗?如果你的MSI安装程序安装Python MSI,这有什么问题吗? - S.Lott
2
因为我想要一个顺畅的安装体验 ;)我已经有了两部分的设置。Python MSI 已经安装,但尚未激活或更改路径。此外,我面临的情况是已经安装了其他版本的 Python。 - mamcx
1
由于最终用户是小公司,Python脚本是由开发人员制作的。在部署过程中需要执行另一个步骤会成为障碍,我希望避免这种情况(类似于.NET和Java的问题)。 - mamcx
1
如果这些脚本是由开发人员编写的,那么他们不应该害怕安装Python吧? - Nope
考虑将“如何部署Python到”重命名为“如何部署便携式Python 2.7到”,并将标签“python”更改为“python 2.7”。甚至可能将“Windows”更改为“W7”,因为W10是在2015年发布的?这个名称存在一对重复项。旧答案可能会误导现代用户。 - halt9k
4个回答

15

Portable Python文件夹从安装包中复制到与您的Delphi / Lazarus应用程序相同的文件夹中,根据需要设置所有路径。


最终我做了这样的事情,将完整的Python文件夹复制为一个子文件夹,并预先安装所有模块,然后将路径指向它。 - mamcx
1
令人惊讶的是,“可能起作用的最简单的事情”经常成为一种可行的策略。 - Caleb Hattingh
3
他们网站现在说:“便携式Python不再继续开发”。他们提供了替代选择。 - Jim DeLaHunt

13

你可以尝试使用py2exe。它可以创建一个包含Python的.exe文件!


这对我来说不起作用,因为产品的重要部分是能够在Python中创建插件。就像我的应用程序是Apache一样,任何人都可以使用Python或PHP构建自己的网站。 - mamcx
3
我建议使用Pyinstaller,它可以很好地创建.exe文件并将所有依赖项(甚至是Python解释器)聚合到脚本的dist文件夹中。你可以在 这里查看。此外,Pyinstaller支持py3.3+,而py2exe几乎总是失败的,如此处所述 - Yashash Gaurav

4

使用P4D将Python解释器集成到您的Delphi应用程序中。这些组件实际上是可行的,而且还可以在两个方向上使用(将Delphi类作为二进制扩展暴露给Python,以及在Delphi内部使用Python解释器)。我还在Google Code的“问题”页面上看到了适用于Lazarus兼容性的补丁,但似乎那里可能存在一些未解决的问题。


1

我认为将.EXE打包与PyInstaller或py2exe等工具以及Python编写的插件结合起来是没有问题的。创建的.EXE可以轻松地检测到它安装的位置,然后代码内部可以简单地从一些预定的插件目录中import文件。不要忘记,一旦将Python脚本打包成可执行文件,它也会将Python解释器打包在内部,因此您就拥有了一个完整的Python环境,其中包含您自己的代码。


是的...除了相同的工具将在osx和linux上可用。因此,最好、更简单的方法是发布.py文件。 - mamcx
1
我不理解mamcx评论的上下文。您可以在所有平台上使用py2exe,而且.py插件无需更改。 - Eli Bendersky
根据py2exe的网站,它只适用于Windows系统...或者我漏掉了什么? - mamcx
mamcx,你是对的。然后使用http://www.pyinstaller.org/(我无意中提到的第一个),因为这是我用于我的代码的工具。 - Eli Bendersky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接