Я очень новичок в Python в целом, но я создал приложение на Python 2.6 / wxPython 2.8, которое отлично работает, когда я запускаю его через Python. Но я хотел пойти дальше и иметь возможность развернуть его как исполняемый файл Windows, поэтому я пробовал py2exe. Но я не смог заставить его работать. Он всегда компилирует исполняемый файл, но когда я на самом деле пытаюсь его запустить, он лает какое-то загадочное сообщение об ошибке. Сначала они были простыми сообщениями о том, что не могут найти определенные библиотеки DLL, но даже после предоставления всех требуемых библиотек DLL теперь возвращает следующее:
The application failed to initialize properly (0xc0000142).
Click OK to terminate the application.
Итак, я разбил все на части и просто создал очень, очень простое приложение, использующее wxPython, просто чтобы посмотреть, сработает ли это, или мешают некоторые из более сложных функций моего исходного приложения. Но даже мой простой тест вернул ту же ошибку. Вот код для простого тестового скрипта:
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, wx.ID_ANY, title, style=wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX)
panel = wx.Panel(self, -1, style = wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN | wx.FULL_REPAINT_ON_RESIZE)
main_sizer = wx.BoxSizer(wx.VERTICAL)
testtxt = wx.StaticText(panel, -1, label='This is a test!')
main_sizer.Add(testtxt, 0, wx.ALIGN_CENTER)
panel.SetSizerAndFit(main_sizer)
self.Show(1)
return
app = wx.PySimpleApp()
frame = MainWindow(None, -1, 'Test App')
app.MainLoop()
А вот скрипт установки py2exe, который я использовал:
#!/usr/bin/python
from distutils.core import setup
import py2exe
manifest = """
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
version="0.64.1.0"
processorArchitecture="x86"
name="Controls"
type="win32"
/>
<description>Test Program</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
"""
setup(
windows = [
{
"script": "testme.py",
"icon_resources": [(1, "testme.ico")],
"other_resources": [(24,1, manifest)]
}
],
data_files=["testme.ico"]
)
Затем я запускаю python setup.py py2exe
, он генерирует EXE-файл, предупреждает о некоторых DLL-файлах (которые я впоследствии копирую в каталог dist), но затем, когда я пытаюсь запустить EXE, я сразу получаю сообщение об ошибке, приведенное выше. .