PyInstaller创建的应用程序在使用多个源文件时不执行任何操作

时间:2018-06-08 14:48:27

标签: python macos wxpython pyinstaller

我有一个基于wxpython的应用程序,使用解释器运行良好。当我尝试将它在MacOS上打包到单个应用程序包时,PyInstaller会在没有错误的情况下完成并在/ dist中创建一个应用程序包。运行创建的包没有任何作用。该应用程序刚刚启动,然后完成,没有任何错误。在/ dist中运行另外创建的非捆绑文件也可以完成而无需执行任何操作 - 并且不会提供任何错误消息。

现在令人惊讶的是,当源代码(具有不同的类)在单个.py源文件中时,PyInstaller会创建一个完全正常运行的应用程序包。

这里有一些最小的代码,可以看到发生了什么。

myapp.py:

#!/usr/bin/env pythonw
# -*- coding: utf-8 -*-
import wx
from myapp.App import App
if __name__ == "__main__":
    myapp = App()
    myapp.app.MainLoop()

的myapp / App.py:

import wx
class App(wx.Frame):
    def __init__(self):
        self.app = wx.App(False)
        wx.Frame.__init__(self, parent=None, title="Window")
        wx.StaticText(self, wx.ID_ANY, label="Hello World!", style=wx.ALIGN_CENTER)
        self.Show()

运行./myapp.py以单一窗口启动应用程序。好。

使用以下命令使用PyInstaller打包应用程序会创建应用程序,但该应用程序不执行任何操作:

pyinstaller --windowed --clean --onefile -y myapp.py

然而,将所有代码放在一个文件中,一切都开始有效。

single-myapp.py

#!/usr/bin/env pythonw
# -*- coding: utf-8 -*-
import wx
class App(wx.Frame):
    def __init__(self):
        self.app = wx.App(False)
        wx.Frame.__init__(self, parent=None, title="Window")
        wx.StaticText(self, wx.ID_ANY, label="Hello World!", style=wx.ALIGN_CENTER)
        self.Show()
if __name__ == "__main__":
    myapp = App()
    myapp.app.MainLoop()

现在PyInstaller按预期工作并创建一个功能应用程序:

pyinstaller --windowed --clean --onefile -y single-myapp.py

我有点失去了这里发生的事情。我尝试了对pyinstaller命令的几个修改,一个是使用-p选项提供/ myapp /的路径。

以下是使用的版本:

  • Python 3.6.5 :: Anaconda custom(64位)
  • pyinstaller 3.3.1
  • MacOS 10.13.5

0 个答案:

没有答案