我有一个Python应用程序,我决定使用.exe来执行它。
这是我用来执行.exe:
的代码# -*- coding: cp1252 -*-
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1}},
windows = [{'script': "SoundLog.py"}],
zipfile = None,
packages=[r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar", r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Plugins"],
)
但是当我使用.exe运行我的应用程序时,图形是完全不同的。
在下面的图像中,您可以看到运行思想python的应用程序在左侧,并且运行时认为右侧是.exe。
如何使.exe与运行思想python的那个一样好?
答案 0 :(得分:7)
我认为你的意思是工具栏和按钮的视觉风格。您需要将清单文件添加到EXE文件或作为单独的文件,以便Windows应用最近的comctl32.dll版本的现代样式。
在MSDN上查看Using Windows XP Visual Styles With Controls on Windows Forms。阅读有关创建“.exe.manifest”文件的相关部分。
可以在wxPython site找到更多特定于py2exe的教程。他们解释了如何使用setup.py来包含必要的清单文件。
答案 1 :(得分:1)
我安装的最终设置是:
# -*- coding: cp1252 -*-
from distutils.core import setup
import py2exe, sys, os
from glob import glob
sys.argv.append('py2exe')
manifest = """
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity
type='win32'
name='Microsoft.VC90.CRT'
version='9.0.21022.8'
processorArchitecture='*'
publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
</assembly>
"""
setup(
## data_files = data_files,
options = {'py2exe': {'bundle_files': 1}},
windows = [{'script': "SoundLog.py", 'other_resources': [(24,1,manifest)]}],
zipfile = None,
packages=[r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar", r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Plugins"],
)
感谢您的快速回答:)
答案 2 :(得分:0)
当我在Windows 7上使用Python 2.6时,我发现我不需要清单文件。但是当我在XP和Vista上使用Python 2.5时,我确实需要它。如果您使用GUI2Exe,您需要做的就是选中一个小复选框以包含它。
请参阅以下教程:
http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/
http://www.blog.pythonlibrary.org/2010/08/31/another-gui2exe-tutorial-build-a-binary-series/
由于Windows上的编译器切换(即VS2008 vs ye olde VS2003),还有一个与2.6相关的Python相关清单。 Robin Dunn似乎修复了wxPython的最新版本,所以你不需要包含那些烦恼,但是如果你不使用wx,那么当你尝试创建二进制文件时,你可能会遇到这个问题。 py2exe网站和wxPython wiki都讨论了这个问题以及如何创建SxS清单。