pygtk unter Windows wird nicht erkannt

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

pygtk unter Windows wird nicht erkannt

Beitragvon Danshi » Freitag 27. Oktober 2006, 10:01

Hallo zusammen,

ich beschäftige mich erst seit gestern mit Python und scheitere bereits bei der Installation von pygtk unter Windows. Dazu habe ich auch schon einige Beiträge im Forum gelesen, welche mir aber leider nicht weiterhelfen konnten.
Mein Vorgehen:
- Python 2.5 installiert
- GTK+ (2.10.6) installiert
- PyGTK (2.10.3) installiert
- Glade (3.0.2) runtergeladen und ausgeführt <das läuft schonmal>

Mit Hilfe eines kleinen Programmes habe ich nun die Funktionalität testen wollen. Aber ... Fehler! :(

Traceback (most recent call last):
File "C:\Python25\source\example.py", line 1, in <module>
import pygtk
ImportError: No module named pygtk


Wenn pygtk nicht mit eingebunden ist bekomme ich folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\Python25\source\example.py", line 2, in <module>
import gtk
File "C:\Python25\Lib\site-packages\gtk-2.0\gtk\__init__.py", line 38, in <module>
import gobject as _gobject
ImportError: No module named gobject


Wie lassen sich die Fehler beheben?
Ich bin für jeden Rat dankbar!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 27. Oktober 2006, 14:29

Hi Danshi, willkommen im Forum!

Du musst auch PyGObject und vermutlich auch PyCairo installieren, dann sollte es gehen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Montag 30. Oktober 2006, 08:59

Danke für den Hinweis, Leonidas.

Aber jetzt tritt folgender Fehler auf:

Traceback (most recent call last):
File "C:\Python25\source\example.py", line 3, in <module>
import gtk
File "C:\Python25\lib\site-packages\gtk-2.0\gtk\__init__.py", line 48, in <module>
from gtk import _gtk
File "C:\Python25\lib\site-packages\cairo\__init__.py", line 1, in <module>
from _cairo import *
ImportError: DLL load failed: Die angegebene Prozedur wurde nicht gefunden.


Wo kann ich die dll's einbinden? (In der Umgebungsvariablen funktionierts nicht. )
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 09:20

Du musst den Ordner mit den GTK+-DLLs an den %PATH% anhängen und dann neustarten (oder zumindest ausloggen), damit die Variable übernommen wird.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Montag 30. Oktober 2006, 09:54

Hui, schnelle Antwort!

Mit "sys.path" werden doch die Ordner/Unterordner angezeigt, die in meiner definierten PATH-Variablen stehen, oder?

Das sieht bei mir so aus:
['C:\\Python25\\source', 'C:\\Python25\\Lib\\idlelib', 'C:\\Python25\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\gtk-2.0']

Aber in meiner PATH steht:
C:\Programme\Gemeinsame Dateien\GTK\2.0;C:\Python25

Anmerkung:
Ich prüfte dies auch in der Console (Commadozeile) und hier stehen bei PATH alle Verzeichnisse.

Die dll's werden noch immer nicht erkannt!
Zuletzt geändert von Danshi am Montag 30. Oktober 2006, 10:26, insgesamt 1-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 10:12

Danshi hat geschrieben:Mit "sys.path" werden doch die Ordner/Unterordner angezeigt, die in meiner definierten PATH-Variablen stehen, oder?

Nein, sys.path zeigt den %PYTHONPATH% an, d.h. den Pfad in dem Python nach Modulen sucht. Der System-PATH (unter Windows %PATH%) ist unter os.environ['PATH'] zu finden und wie du siehst unterscheidet er sich ziemlich:

Code: Alles auswählen

In [7]: os.environ['PATH']
Out[7]: '/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games'
In [8]: sys.path
Out[8]: ['', '/usr/local/bin', '/usr/lib/python25.zip', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages']


Danshi hat geschrieben:Aber in meiner PATH steht:
C:\Programme\Gemeinsame Dateien\GTK\2.0;C:\Python25

Wo ist denn bei dir der GTK-Kram installiert? In welchem Ordner sind die GTK-DLLs zu finden?

Danshi hat geschrieben:Das erste Verzeichnis wird ignoriert, warum? Oder was passiert da genau?

Nein, es wird nicht ignoriert, denn %PYTHONPATH% hat mit %PATH% nichts zu tun, wie ich es schon oben erklärt habe.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Montag 30. Oktober 2006, 10:36

Der GTK-Kram ist hier installiert:
C:\Programme\Gemeinsame Dateien\GTK\

...und die dazugehörigen DLL's sind dementsprechend in den Unterordnern:
C:\Programme\Gemeinsame Dateien\GTK\2.0\bin;
C:\Programme\Gemeinsame Dateien\GTK\2.0\lib\gtk-2.0\2.10.0\engines;
C:\Programme\Gemeinsame Dateien\GTK\2.0\lib\gtk-2.0\2.10.0\immodules;
C:\Programme\Gemeinsame Dateien\GTK\2.0\lib\gtk-2.0\2.10.0\loaders
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 10:43

Dann musst du C:\Programme\Gemeinsame Dateien\GTK\2.0\bin (also mit dem bin-Ordner) in deinen %PATH% aufnehmen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Montag 30. Oktober 2006, 10:56

Im Moment steht dieser Pfad unter den 'Benutzervariablen meines users'... und das ist scheinbar der Fehler!
Denn es geht noch immer nicht.

Also muss es in die Systemvariablen geschrieben werden.
Doch leider hab ich darauf keinen Zugriff...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 11:15

Danshi hat geschrieben:Im Moment steht dieser Pfad unter den 'Benutzervariablen meines users'... und das ist scheinbar der Fehler!
Denn es geht noch immer nicht.

Du kannst einfach eine Kommandozeile öffnen und dort echo %PATH% eintippen. Wenn dort der GTK-Pfad drin ist, sollte alles ok sein. Wenn nicht, checkst du noch mal die PATH-Einstellungen, meldest dich ab, meldest dich wieder an und guckst wieder, ob %PATH% diesmal korrekt ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Montag 30. Oktober 2006, 11:22

KommandozeileEingabe:
V:\>echo %PATH%
C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\ORANT\BIN;c:\matlabr12\bin\
win32;C:\Programme\QuickTime\QTSystem\;C:\Programme\Gemeinsame Dateien\GTK\2.0\bin;C:\Python25


Der Pfad existiert!
Aber der Fehler bleibt bestehen!

....ImportError: DLL load failed: Die angegebene Prozedur wurde nicht gefunden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 11:36

Mir fällt jetzt eigentlich nur noch ein, dass du ein Downgrade auf GTK+ 2.8 machen könntest. Dazu deinstalliesrst du den ganzen Kram und installierst das Gladewin32-GTK+ 2.8 sammt PyGTK 2.8 & Co.

Scheinbar ist GTK+ 2.10 noch etwas problematisch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 30. Oktober 2006, 11:45

Danshi hat geschrieben:Doch leider hab ich darauf keinen Zugriff...

Hi Danshi!

Du bist nicht Administrator auf dem Computer. Das ist wahrscheinlich der Grund für deine Probleme. Es ist ziemlich selten der Fall, dass du zum korrekten Installieren eines Programmes ohne Admin-Rechte auskommst. Wahrscheinlich will das Installationsprogramm etwas in die Registry schreiben und darf nicht.

Bei mir ist das zumindest der Fall:
[code=]Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\GTK]

[HKEY_LOCAL_MACHINE\SOFTWARE\GTK\2.0]
"Path"="J:\\Programme\\GTK"
"DllPath"="J:\\Programme\\GTK\\bin"
"Version"="2.8.18"
"VendorVersion"="2.8.18-rc1"

[HKEY_LOCAL_MACHINE\SOFTWARE\GTK\glade]
"Path"="J:\\Programme\\GTK"[/code]

Noch etwas könnte ein Problem sein. "Gemeinsame Dateien" --> da ist ein Leerzeichen drinn.

- Alles wieder deinstallieren
- Pfade bereinigen
- Neu starten
- Als Admin anmelden
- Alles in den vorgegebenen Pfad installieren. (C:\Programme\Gtk)
- Verwenden

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

Beitragvon Danshi » Dienstag 31. Oktober 2006, 13:59

Ich danke euch für eure Ratschläge!

Da ich eigentlich die neure Version (2.10) benutzen wollte, bin ich erstmal auf gerold's Vorschlag eingegangen und hab es als Admin versucht.
Aber das Problem war noch immer präsent.
Also versuchte ich nun doch Leonidas Vorschlag...
Und siehe da... mit GTK+ 2.8 und PyGTK2.8 funzts. :D

THX
Benutzeravatar
DHK
User
Beiträge: 26
Registriert: Sonntag 18. März 2007, 14:55
Wohnort: Bayern

Beitragvon DHK » Sonntag 18. März 2007, 15:03

Hallo,
ich bin ebenfalls Python-Neuling und habe ähnliche Probleme wie mein Vorredner.
Ich suchte mir per Google eine Anleitung, um PyGTK zu installieren. Dabei ging ich exakt nach dieser Anleitung vor. Python 2.5 hatte ich schon installiert, also lud ich mir GTK+ und den Windows Port herunter. Danach rebootete ich.
Ich habe ein kleines Test-Script im Internet gefunden:

Code: Alles auswählen

#!/usr/local/bin/python
# example base.py

import pygtk
pygtk.require(2.0)
import gtk

class Base:
   def __init__(self):
      self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
      self.window.show()

   def main(self):
      gtk.main()

print __name__
if __name__ == "__main__":
   base = Base()
   base.main()


Bei der Ausführung dieses Skripts erhalte ich die Fehlermeldung: "Traceback (most recent call last):
File "E:\Eigene Dateien\Programme\test.py", line 4, in <module>
import pygtk
ImportError: No module named pygtk".

Also las ich mir diesen Thread hier durch, deinstallierte Version 2.10 und ersetzte sie mit 2.8; danach ging es immer noch nicht.
Was sind denn PyGObject und PyCairo und wo kriege ich die her? Was ist Glade?
Entschuldigt diese "noobhaften" Fragen meinerseits, aber ich habe jetzt knapp ein Jahr lang nur Perl programmiert, hatte irgendwann diesen unübersichtlichen Code satt und bin zu Python gewechselt. Und ich hoffe, ich bin in der Python-Gemeinschaft willkommen! :D

Gruß

DHK
Opera ist noch immer der beste...

Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot]