У меня проблемы с созданием исполняемых файлов с gui2exe - PullRequest
0 голосов
/ 10 сентября 2011

Я решил попробовать 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».

Я пробовал использовать только консольное приложение - оно работает нормально.

Ответы [ 2 ]

1 голос
/ 29 марта 2012

У меня была такая же проблема. Простое решение - вручную добавить путь для carchive в PYTHONPATH перед запуском pyinstaller. carchive.py должно быть где-то в вашей папке pyinstaller. Для меня это было под svn.pyinstaller.org\PyInstaller\loader

0 голосов
/ 17 сентября 2011

py2exe изо всех сил пытается найти все зависимые модули, но иногда это не удается, например, prgram динамически создает путь к модулю и использует __import__ для его загрузки.

В этом случае вам нужно изменить setup.py и добавить недостающие модули вручную. Следующий код исправляет «модуль без имени _qt»:

import py2exe
from distutils.core import setup

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