创build一个独立的Windows EXE,不需要pythonXX.dll

有没有办法从python脚本创build一个独立的.exe。 用py2exe生成的可执行文件只能用pythonXX.dll运行。 我想获得一个完全独立的.exe,不需要安装python运行时库。 它看起来像一个链接问题,但使用静态库,而不是dynamic的,它也将是有用的应用一个条,以消除未使用的符号。

任何想法 ?

谢谢。

亚历山德罗

您可以在最新版本的py2exe中执行此操作…
setup.py文件中添加如下代码(关键部分是'bundle_files':1)。

要在安装中包含您的TkInter软件包,请使用'includes'键。

 distutils.core.setup( windows=[ {'script': 'yourmodule.py', 'icon_resources': [(1, 'moduleicon.ico')] } ], zipfile=None, options={'py2exe':{ 'includes': ['tkinter'], 'bundle_files': 1 } } ) 

由于Windows的动态链接程序的工作原理,如果使用.pyd或.dll Python模块,则不能使用静态库; 在Windows中加载的DLL不会自动与可执行文件共享符号空间,因此需要包含Python符号的单独DLL。

如果你有一个单一的可执行文件的目的是为了方便下载/电子邮件等,我解决了这个捆绑py2exe输出使用Inno安装程序 。 这实际上比单个可执行文件更好,因为不是提供一个可执行文件,可以放入某个目录,一个运行良好的Windows应用程序将提供一个卸载程序,在“添加/删除程序”小程序中显示,等等。Inno处理所有这个给你。

另一个解决方案是用Python创建一个单独的exe文件,并在其中安装所有的依赖项,包括python.dll。 包装中有一些魔力,但它是正常的。 细节在这里:

http://code.google.com/p/pylunch/downloads/detail?name=PyLunch-0.2.pdf

这不是最好的办法,但是你可以考虑使用内置的.exe和.dll文件的可执行SFX Archive,并且设置它在双击时执行你的.exe文件。