如何正确地打包和安装Python给Windows用户

3

我需要为我的用户重新分发Python 2.6。

目前,我从http://www.python.org/download/执行msi安装程序的静默安装,但我遇到了一些问题,例如如果安装了其他版本的python,则此版本不会成为默认版本。

另一方面,尽管这可能很少见,但如果用户已经安装了python并且我安装了自己的python,则可能会导致冲突。

那么,最好的行动是什么?如何自动化此安装?我已经有了http://installbuilder.bitrock.com,但可用的django堆栈对于我的应用程序来说太大了,并且我需要预先安装几个python模块。

我想知道在这种情况下,virtualenv是否是最佳选择,但仍然存在正确安装它的问题...


这可能不是很有帮助,但你真的需要将Python作为常规安装程序分发吗?有一些工具,比如py2exe,与像InnoSetup这样的安装程序构建器配合使用,可以让你向用户提供可执行文件,而不会干扰本地Python安装或其他问题。 - Peter Hansen
我不能使用py2exe,因为它是为能够接受Python脚本/插件的服务器而设计的,所以我需要完整的Python发行版... - mamcx
@mamcx,这应该不是一个真正的问题。即使应用程序被py2exe处理过,它仍然能够从文件系统中导入并使用execfile()等函数。也许提出一个单独的问题来询问这个问题会给你一个直接的解决方案,并使这个特定的问题无关紧要。 - Peter Hansen
这是针对插件可扩展系统的。我提供一个Python模块(SDK)来使用我的服务器,所以反过来也一样:插件加载SDK。此外,这将在OSX和Linux上工作,因此有两种方法会使事情变得复杂。Py2Exe仅适用于部署单个脚本,而不适用于像部署Web服务器(我的应用程序类似于Web服务器软件)这样的东西。 - mamcx
1
我会接受你对于这种情况最了解自己需要什么的看法。不过还有一点需要注意:我们也成功地使用py2exe打包了一个基于Pylons的Web服务器应用程序,并将其安装为Windows服务,因此在使用py2exe处理“单个脚本”之外的任务时并不存在固有问题。 - Peter Hansen
1个回答

2

我除了进行一些初步的研究之外,还没有使用过它,但如果你正在寻找商业预构建解决方案,ActiveState的ActivePython通常能够满足你的需求。

我曾经参与开发过包含自己捆绑Python的软件,从未出现过冲突问题。在我们的情况下,它是与其他软件一起安装的,而不是安装在C:\Python26中,并且它只是为软件使用而设计的,而不是替换系统上任何现有的Python版本。一个完整的Python预编译到.pyo只需要大约10-20MB的空间,具体取决于你包括哪些模块。所以我不会担心可能的重复性。

拥有自己的副本也可以使你的生活更轻松,因为你知道所有第三方库的确切版本;你不必担心用户升级某些会破坏你的应用程序的内容。反驳的观点是,一些用户可能希望获取最新版本的库,出于安全原因。但根据我的经验,这些用户非常少见,对于他们来说,这只是多做一点工作而已。

最后,我假设你有想要安装完整的Python版本的原因。但如果你只是希望分发一个单独的应用程序,请查看py2exe


1
是的,它是商业软件,所以你有成本劣势和可能的支持优势。你没有提到任何成本要求,所以我把它作为一个选择提出来了。 - DNS

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