如何从具有GUI的Python应用程序中获取没有依赖关系的Windows二进制文件?

时间:2015-03-23 15:56:58

标签: python windows gtk

我是一名使用Linux(Ubuntu)系统进行开发的Python开发人员。我想为Windows用户编写GUI应用程序。这些用户不是开发人员,因此我希望尽可能简化安装/执行。

目前,在我看来,我需要用户安装GTK / Qt,然后使用pip来安装我的应用程序。这似乎太复杂了。

有没有办法获得没有依赖关系的Windows二进制文件,只需启动GTK3应用程序? (目前,我的代码相对简单,如果您有兴趣,请参阅http://pastebin.com/rNcFm1m7。)

我尝试了什么

pyinstaller

我尝试使用pyinstaller。我在我的Linux机器上运行以下命令,this code保存为formula_writer.py

pyinstaller --onefile formula_writer.py; dist/formula_writer

它不起作用:

Traceback (most recent call last):
  File "<string>", line 8, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
    exec(bytecode, module.__dict__)
  File "/home/moose/FormulaWriter/build/formula_writer/out00-PYZ.pyz/gi", line 42, in <module>
ImportError: cannot import name _gi

由于GTK3可能是问题,我用GTK2编写了一个非常简单的Python GUI应用程序:

#!/usr/bin/env python
# example base.py
import pygtk
pygtk.require('2.0')
import gtk


class Base:
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.destroy)
        self.window.show()

    def destroy(self, widget, data=None):
        gtk.main_quit()

    def main(self):
        gtk.main()
print(__name__)

if __name__ == "__main__":
    base = Base()
    base.main()

它仍然不起作用:

Traceback (most recent call last):
  File "<string>", line 5, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
    exec(bytecode, module.__dict__)
  File "/home/moose/FormulaWriter/build/formula_writer_gtk2/out00-PYZ.pyz/gtk", line 30, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
    exec(bytecode, module.__dict__)
  File "/home/moose/FormulaWriter/build/formula_writer_gtk2/out00-PYZ.pyz/gobject", line 26, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
    exec(bytecode, module.__dict__)
  File "/home/moose/FormulaWriter/build/formula_writer_gtk2/out00-PYZ.pyz/glib", line 22, in <module>
ImportError: No module named _glib

1 个答案:

答案 0 :(得分:0)

您必须拥有Windows计算机。没有办法。

但是,在Windows机器上有多个简单的选项:

如果你有一个Python包,你也可以去

  • python setup.py bdist --formats=wininst:Works,创建安装程序
  • python setup.py bdist --formats=msi:Works,也会创建一个安装程序