Python Gtk3 可执行文件

4

我开始使用Python中的GTK 3。如何使用PyInstallercx_Freeze或py2exe从我的GTK 3 Python源代码创建可执行Windows文件?

我尝试了很多Stack Overflow和其他网页上的答案,但都没有成功。

我尝试使用PyInstaller制作它(我认为这可能是最简单的方法),我的源代码如下:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class ButtonWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Button Demo")
        self.set_border_width(10)

        hbox = Gtk.Box(spacing=6)
        self.add(hbox)

        button = Gtk.Button.new_with_label("Click Me")
        button.connect("clicked", self.on_click_me_clicked)
        hbox.pack_start(button, True, True, 0)

        button = Gtk.Button.new_with_mnemonic("_Open")
        button.connect("clicked", self.on_open_clicked)
        hbox.pack_start(button, True, True, 0)

        button = Gtk.Button.new_with_mnemonic("_Close")
        button.connect("clicked", self.on_close_clicked)
        hbox.pack_start(button, True, True, 0)

    def on_click_me_clicked(self, button):
        print("\"Click me\" button was clicked")

    def on_open_clicked(self, button):
        print("\"Open\" button was clicked")

    def on_close_clicked(self, button):
        print("Closing application")
        Gtk.main_quit()

win = ButtonWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

但是我得到了以下错误:

Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "c:\python34\lib\gi\__init__.py", line 102, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Gtk not available
gtk returned -1

我该怎么办或者如何使用py2exe或cx_Freeze制作可执行文件?


数值错误:命名空间Gtk不可用,这是由您的<module>第2行引发的。 - mabe02
当使用pyinstaller而不是py2exe时,OP遇到了这个错误。 - user5416120
好的!那么试试使用 py2exe。你可以作为参考这个答案,我给了一个问题的回答。 - mabe02
1
@mabe02 我讨厌关于 Python 转换为 exe 的问题,因为它们很少得到关注,大多数时候你必须自己解决,或者如果你回答了一个问题,你的回答通常不会引起注意,提问者大多数时间也不会回来确认你的答案。 - user5416120
@DeliriousSyntax 有时这些库的文档不包含足够的示例,但有时人们根本不阅读它 :) - mabe02
显示剩余2条评论
1个回答

3

安装 cx_Freeze

在 Windows 上,你可以直接执行 pip install cx_Freeze 进行安装。或者,你也可以前往他们的官方网站 cx_Freeze


在与您的程序相同的文件夹中创建一个setup.py文件。

setup.py文件

import cx_Freeze

executables = [cx_Freeze.Executable("file.py")]

cx_Freeze.setup(
    name="WhatEverYouWantToNameIt",
    options={"build_exe": {"packages":["gi"]}},
    executables = executables
)

在程序文件所在的位置打开命令提示符。在Windows上,您只需Shift + <left-click单击文件夹并单击“在此处打开命令窗口”。一旦打开,输入python setup.py build。如果出现错误提示Python不在您的路径中,则提供完整路径。例如,在Windows上,使用Python 3.4,您应该这样做:

C:/Python34/python setup.py build

如果你使用的是Mac,则可以执行以下操作:
python setup.py bdist_dmg

完成后,请回来告诉我它是否有效。如果不起作用,请给我错误消息,我会解决问题。祝你好运!


1
我不是原帖作者,但在尝试为Windows XP打包我的应用程序时遇到了相同的错误。我尝试了你的解决方案,起初它没有起作用,因为如果您不指定版本号,cx_freeze会抛出一个错误。修复后,我得到了与pyinstaller相同的错误:“命名空间gtk不可用”。 - user1090729

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接