【问题标题】:I am having problems with creating executables with gui2exe我在使用 gui2exe 创建可执行文件时遇到问题
【发布时间】:2011-11-14 07:37:23
【问题描述】:

我决定尝试使用 gui2exe 来制作我的可执行文件,但我无法让它工作,无论是 PyInstaller、Py2exe 还是 cxFreeze。它创建了一个不可启动的可执行文件(我运行它,它开始加载,然后它停止加载,什么都没有,任务管理器在进程中没有它)。

当 gui2exe 让我测试已编译的项目并且我点击“是”时,我收到以下错误:“此项目从未编译过或其可执行文件已被删除。”

当我通过批处理文件或 cmd 编译时,不会发生这种情况。

请提供有关使用 gui2exe 的任何帮助、指南、手册、文档!

  • 我在 Windows 7 32bit 上运行它
  • Python 2.7
  • GUI2exe-0.5.1
  • 我安装了 pyinstaller-1.5.1、py2exe-0.6.9、cx_freeze-4.2.3

更新: 这是我正在使用的测试代码: 文件 Tk_tester.py(即主要文件)

# -*- coding: mbcs -*-

from Tkinter import *
import ttk

from ScrolledWidgets import ScrolledText

root = Tk()
root.title('Gui2exe tester application')

txt = ScrolledText(root)
txt.pack(side='top', fill='both', expand=1)
txt.Text['font'] = ('Tahoma', 10)

b = ttk.Button(root, text='Quit', command=root.quit)
b.pack(side='bottom', anchor='e')

root.mainloop()

还有文件 ScrolledWidgets.py

# -*- coding: mbcs -*-

from Tkinter import *
import ttk

class ScrolledText(ttk.Frame):
    def __init__(self, master, scrolls = 'v'):
        ttk.Frame.__init__(self, master)
        self['relief'] = 'sunken'
        self['borderwidth'] = 1
        self.rowconfigure(0, weight = 1)
        self.columnconfigure(0, weight = 1)

        self.__scroll = scrolls

        self.Text = Text(self, relief = 'flat', borderwidth = 0)
        self.Text.grid(column = 0, row = 0, sticky = 'news')

        if self.__scroll == 'v':
            yscroll = ttk.Scrollbar(self, orient = 'vertical')
            yscroll.grid(column = 1, row = 0, sticky = 'ns')
            self.Text['yscrollcommand'] = yscroll.set
            yscroll['command'] = self.Text.yview

        elif self.__scroll == 'h':
            xscroll = ttk.Scrollbar(self, orient = 'horizontal')
            xscroll.grid(column = 0, row = 1, sticky = 'ew')
            self.Text['xscrollcommand'] = xscroll.set
            xscroll['command'] = self.Text.xview

        elif self.__scroll == 'both':
            yscroll = ttk.Scrollbar(self, orient = 'vertical')
            yscroll.grid(column = 1, row = 0, sticky = 'ns')
            self.Text['yscrollcommand'] = yscroll.set
            yscroll['command'] = self.Text.yview

            xscroll = ttk.Scrollbar(self, orient = 'horizontal')
            xscroll.grid(column = 0, row = 1, sticky = 'ew')
            self.Text['xscrollcommand'] = xscroll.set
            xscroll['command'] = self.Text.xview

这编译正常。但是当我运行生成的 exe 时,我得到一个“ImportError:没有名为 carchive 的模块”。

我已尝试使用仅控制台应用程序 - 它运行正常。

【问题讨论】:

  • 你的程序结束了,还是挂了?你能提供一些代码吗?你试过一个最小的 python 例子吗?
  • 谁能给一些关于使用gui2exe的指导?

标签: python py2exe cx-freeze pyinstaller gui2exe


【解决方案1】:

我遇到了同样的问题。一个简单的解决方法是在运行 pyinstaller 之前手动将存档路径添加到 PYTHONPATH。 carchive.py 应该在您的 pyinstaller 文件夹中的某个位置。对我来说是svn.pyinstaller.org\PyInstaller\loader

【讨论】:

    【解决方案2】:

    py2exe 努力寻找所有依赖的模块,但有时它会失败,例如 prgram 动态构建模块路径并使用__import__ 加载它。

    在这种情况下,您必须修改 setup.py 并手动添加缺失的模块。以下代码修复了“没有名为 _qt 的模块”:

    import py2exe
    from distutils.core import setup
    
    setup(
        windows=[{'script': 'test.py'}],
        options={
            'py2exe': 
            {
                'includes': ['PyQt4._qt'],
            }
        }
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 2022-01-17
      • 1970-01-01
      • 2019-09-07
      • 2015-12-24
      • 2022-11-29
      • 2018-07-20
      • 2014-09-23
      相关资源
      最近更新 更多