私は一般的にPythonを初めて使用しますが、Python 2.6 / wxPython 2.8でアプリを作成しました。このアプリは、Pythonで実行すると完全に機能します。しかし、私はさらに一歩進んで、それをWindows実行可能ファイルとして展開できるようにしたかったので、py2exeを試してきました。しかし、私はそれを機能させることができませんでした。常にexeをコンパイルしますが、実際に実行しようとすると、不可解なエラーメッセージが表示されます。最初は、特定の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を実行しようとすると、すぐに上記のエラーが発生します。