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

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!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

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. )
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

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...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Danshi
User
Beiträge: 8
Registriert: Freitag 27. Oktober 2006, 09:39

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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: Alles auswählen

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"
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

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

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...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo DHK, willkommen im Forum,
DHK hat geschrieben: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?
Glade ist der GUI-Designer des GTK-Projektes. Damit kannst du dir GUIs zusammenklicken, die dann in sogenannten glade-Dateien (XML) gespeichert werden und die du dann in deinem Programm laden kannst. Musst du aber nicht, du kannst GUIs auch ebenso "von Hand" programmieren.

PyGObject ist der Python-Wrapper für GObject und PyCairo ist diesselbe für Cairo. Du kannst beide von Cedrics Seite herunterladen - inzwischen sind sie alle auf den GNOME-Servern verfügbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
DHK
User
Beiträge: 26
Registriert: Sonntag 18. März 2007, 14:55
Wohnort: Bayern

Hallo,
ich habe jetzt PyGObject und PyCairo installiert. Mein Skript sieht so aus:

Code: Alles auswählen

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

import pygtk
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 erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "E:\Eigene Dateien\Programme\test.py", line 5, in <module>
import gtk
File "C:\Python25\lib\site-packages\gtk-2.0\gtk\__init__.py", line 48, in <module>
from gtk import _gtk
ImportError: DLL load failed: Die angegebene Prozedur wurde nicht gefunden.


Die anderen Posts in diesem Thread konnten mir da auch nicht viel weiterhelfen. Wie gesagt, habe ich bereits ein Downgrade auf 2.8 gemacht.

Gruß

DHK
Opera ist noch immer der beste...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Da stimmt wohl deine PyGTK-Version nicht mit der GTK+-Version überein. Scheint so, als wäre das ABI inkompatibel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
DHK
User
Beiträge: 26
Registriert: Sonntag 18. März 2007, 14:55
Wohnort: Bayern

Und was könnte man dagegen tun? GTK+ ist doch diese etwa 5 MB große Datei. Und was ist dann PyGTK? Die Windows-Schnittstelle?

Gruß

DHK
Opera ist noch immer der beste...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

DHK hat geschrieben:Und was könnte man dagegen tun?
Die PyGTK und GTK+ Versionen müssen in den ersten zwei Zahlen übereinstimmten: also PyGTK 2.8.x mit GTK+ 2.8.x, PyGTK 2.10.x mit GTK+ 2.10.x.
DHK hat geschrieben:GTK+ ist doch diese etwa 5 MB große Datei.
Nein. Da du aber nicht genau sagst was das für eine Datei ist, wie sie heißt oder wo du sie her hast. Kann ich dir auch nicht sagen, was diese 5 MB große Datei ist. Kann ja alles mögliche sein, ich habe keine Kristallkugel.
DHK hat geschrieben:Und was ist dann PyGTK? Die Windows-Schnittstelle?
Die Python-Schnittstelle. Denn "normalerweise " programmiert man GTK-Programme in C, also braucht man einen Wrapper - PyGTK.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten