开发者

I am having problems with creating executables with gui2exe

I decided to try gui2exe for making my executables, but I cannot get it to work, with neither PyInstaller, Py2exe or cxFreeze. It creates a non-starting executable (I run it, it starts loading, then it stops loading and nothing, task manager doesn't have it in the processes).

When gui2exe offers me to test the compiled project and I hit "Yes" I get the following error: "This project has never been compiled or it's executable has been deleted."

Nothing like that happens when I compile via a batch file or cmd.

Any help, guides, manuals, docs on using gui2exe, please!

  • I'm running it on Windows 7 32bit
  • Python 2.7
  • GUI2exe-0.5.1
  • I have pyinstaller-1.5.1, py2exe-0.6.9, cx_freeze-4.2.3 installed

UPDATE: Here's the test code that i'm using: file Tk_tester.py (that is main one)

# -*- 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()

and the file 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

This compiles ok. But when i run the resulting exe i get an "ImportError: No module named carchive".

I've tried with an only-console app - it runs OK.


I had the same issue. An easy fix is to manually add the path for carchive to your PYTHONPATH before running pyinstaller. carchive.py should be somewhere in your pyinstaller folder. For me it was under svn.pyinstaller.org\PyInstaller\loader


py2exe tries hard to find all depending modules, but sometimes it fails, eg a prgram builds an module path dynamically and uses __import__ to load it.

In this case you have to modify your setup.py and add missing modules manually. The following code fixes an "no module named _qt":

import py2exe
from distutils.core import setup

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜