Wiem że niektórzy z was "bawią się" w pythonie. Ja kilka tygodni temu też zacząłem. Muszę skompilować pewien programik w pytchonie by działał z pliku wykonywalnego na Windowsie. Niestety podczas uruchomienia pliku exe stworzonego przez py2exe wywala mi do loga taki błąd:
Kod
Traceback (most recent call last):
File "szkola.py", line 9, in <module>
File "gtk\glade.pyc", line 12, in <module>
File "gtk\glade.pyc", line 10, in __load
ImportError: DLL load failed: Nie można odnaleźć określonego modułu.
File "szkola.py", line 9, in <module>
File "gtk\glade.pyc", line 12, in <module>
File "gtk\glade.pyc", line 10, in __load
ImportError: DLL load failed: Nie można odnaleźć określonego modułu.
Oto mój plik dla py2exe:
from distutils.core import setup import py2exe setup( name = 'handytool', description = 'Some handy tool', version = '1.0', windows = [ { 'script': 'szkola.py', } ], options = { 'py2exe': { 'packages':'encodings', 'includes': 'cairo, pango, pangocairo, atk, gobject, gio', } }, data_files=[ 'interfejs.glade'] )
A oto plik do skompilowania:
# -*- coding: utf-8 -*- import sys # import PyGTK import pygtk if not sys.platform == 'win32': pygtk.require('2.0') import gtk import gtk.glade # bazowa klasa class Interfejes: button = {} entryp = {} entry = {} widget = {} def __init__(self): # wybieramy plik *glade self.gladefile = "interfejs.glade" self.wTree = gtk.glade.XML(self.gladefile) # pobieramy główne okno self.window = self.wTree.get_widget("window1") if (self.window): self.window.connect("destroy", gtk.main_quit) def ladujWidgety(self): for i in range (1,10): Core.Pole[i] = 0 self.entry[i] = self.wTree.get_widget("entry"+str(i)) self.entryp[i] = self.wTree.get_widget("entryp"+str(i)) self.button[i] = self.wTree.get_widget("button"+str(i)) self.button[i].connect("button_release_event", Core.ObslugaKlikniecia, i ) self.widget["all"] = self.wTree.get_widget("label17") self.widget["ostatnie"] = self.wTree.get_widget("label19") self.widget["najwiecej"] = self.wTree.get_widget("label18") class Core: Pole = {} klikniecia = 0; def ObslugaKlikniecia(self,widget, event, data): self.Pole[data] = self.Pole[data]+1 self.klikniecia = self.klikniecia+1 #wynik = float(self.Pole[data])/float(self.klikniecia)*100 Interfejes.widget["all"].set_text(str(self.klikniecia)) Interfejes.widget["ostatnie"].set_text(str(data)) Interfejes.entry[data].set_text(str(self.Pole[data])) #Interfejes.entryp[data].set_text(str(int(wynik))+"%") self.OdswierzWyniki() def OdswierzWyniki(self): klucz = 0 wartosc = 0 #por["naj"] = 0; for i in range (1,10): wynik = float(self.Pole[i])/float(self.klikniecia)*100 Interfejes.entryp[i].set_text(str(int(wynik))+"%") if wartosc < self.Pole[i]: klucz = i wartosc = self.Pole[i] Interfejs.widget["najwiecej"].set_text(str(klucz)) # wywołanie aplikacji if __name__ == "__main__": Interfejs = Interfejes(); Core = Core(); Interfejs.ladujWidgety(); gtk.main()
Na linuskie działa normalnie, zresztą na windowsie spod interpretatora też. Jednak z tym exe nie mogę sobie poradzić.....