有没有办法从python脚本创建一个独立的.exe。 使用py2exe生成的可执行文件只能使用pythonXX.dll运行。 我想获得一个完全独立的.exe,它不需要安装python运行时库。 它看起来像一个链接问题,但使用静态库而不是动态库,并且应用条带以删除未使用的符号也很有用。
有什么想法吗?
感谢。
的Alessandro
答案 0 :(得分:17)
您可以在最新版本的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
}
}
)
答案 1 :(得分:5)
由于Windows的动态链接器如何工作,如果使用.pyd或.dll Python模块,则无法使用静态库;在Windows中加载的DLL不会自动与可执行文件共享其符号空间,因此需要一个包含Python符号的单独DLL。
答案 2 :(得分:4)
如果你有一个可执行文件的目的是为了简化下载/电子邮件等,我已经通过使用Inno Setup捆绑py2exe输出来解决这个问题。这实际上比拥有单个可执行文件更好,因为不是提供可以放入某个目录的可执行文件,一个表现良好的Windows应用程序将提供一个卸载程序,显示在“添加/删除程序”小程序中,等等.Inno处理所有这适合你。
答案 3 :(得分:2)
另一个解决方案是使用python创建一个单独的exe,并在其中安装所有依赖项,包括python.dll。包装器中有一些魔力,但它确实有效。详情如下:
http://code.google.com/p/pylunch/downloads/detail?name=PyLunch-0.2.pdf
答案 4 :(得分:1)
这不是最好的方法,但您可以考虑使用可执行的SFX存档,其中包含.exe和.dll文件,并将其设置为在双击时执行.exe文件。