Witam
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.
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ć.....