创建一个不需要pythonXX.dll的独立Windows exe

时间:2009-04-01 20:38:17

标签: python windows py2exe

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

有什么想法吗?

感谢。

的Alessandro

5 个答案:

答案 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文件。