我怎样才能从带有 GUI 的 Python 应用程序中获得没有依赖关系的 Windows 二进制文件?
How can I get a Windows binary without dependencies from a Python application with a GUI?
我是一名 Python 开发人员,使用 Linux (Ubuntu) 系统进行开发。我想为 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
你必须有一台 Windows 电脑。没有办法。
但是,在 Windows 机器上有多个简单的选项:
pyinstaller
:尝试过,有效
py2exe
: 目前还没试过
如果你有Python包,你也可以去
python setup.py bdist --formats=wininst
:有效,创建安装程序
python setup.py bdist --formats=msi
:有效,还创建了一个安装程序
我是一名 Python 开发人员,使用 Linux (Ubuntu) 系统进行开发。我想为 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
你必须有一台 Windows 电脑。没有办法。
但是,在 Windows 机器上有多个简单的选项:
pyinstaller
:尝试过,有效py2exe
: 目前还没试过
如果你有Python包,你也可以去
python setup.py bdist --formats=wininst
:有效,创建安装程序python setup.py bdist --formats=msi
:有效,还创建了一个安装程序