tkinter unter linux debian installieren

Probleme bei der Installation?
Antworten
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Hi,
ich möchte tkinter unter Debian haben. Ich habe Debian squeeze und python3.4 manuell installiert. Das Modul tkinter ist unter .../libs/tkinter vorhanden. Leider kommt die Fehlermeldung, dass das Modul _tkinter nicht gefunden wird, es ist auch nicht da. Ich habe mittels einer googleschen Suchanfrage herausgefunden, dass das Paket python-tk bzw. python3-tk nachinstalliert werden muss. Dieses Paket habe ich auch nachinstalliert.

Vorher klappte der Befehl "import Tkinter" unter den Konsolen bei python2.7.x und 3.2.x nicht, nach apt-get install python-tk und python3-tk klappte es unter beiden Konsolen, leider noch nicht beim Interpreter python3.4.1. Beim Installieren von python3-tk hab ich auch gesehen, dass nur automatisch für die python-Versionen 3.2.X die _tkinter-Dinger installiert wurden, aber halt nicht für python3.4.1.

Kann ich das Modul irgendwie auch für python 3.4.1 bekommen? Könnte ich es einfach aus dem Verzeichnis von python3.2.X mit copy-paste in das lib-Verzeichnis für python 3.4.1 kopieren?
BlackJack

@Papp Nase: Das `_tkinter`-Modul muss zur Python-Version passen. Wäre komisch wenn Debian-Wheezy kein Python 3.4 als Paket hat, aber gerade *dafür* ein passendes `_tkinter`.

Du wirst Python 3.4 noch mal neu übersetzen müssen und vorher die entsprechenden Header-Dateien für Tcl/Tk installieren müssen die beim übersetzen benötigt werden um das `_tkinter`-Modul zu bauen. Am besten machst Du vorher ein ``apt-get build-dep python3 python3-tk``. Dann hast Du alle Abhängigkeiten die benötigt wurden um die beiden Python 3.2-Pakete aus den Paketquellen zu bauen. Kann nämlich gut sein, dass Du auch kein `ssl`-Modul oder `bzip` hast weil die entsprechenden Header-Dateien nicht vorher installiert waren.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

dass ist aber kompliziert :-(

Also - ich muss "nur" den apt-get buld-dep befehl ausführen und dann neu compilieren, dann müsste es klappen?
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Schade, es hat nicht geklappt. Ich habe vorher das apt-get ausgeführt und auch nochmal neu diese Befehle:
was könnte ich falsch gemacht haben? es kamen beim Compilieren auch keine Fehlermeldungen :-(

Code: Alles auswählen

apt-get build-dep python3 python3-tk

$ sudo apt-get install build-essential
$ sudo apt-get install libncurses5-dev libncursesw5-dev libreadline6-dev
$ sudo apt-get install libdb5.1-dev libgdbm-dev libsqlite3-dev libssl-dev
$ sudo apt-get install libbz02-dev libexpat1-dev liblzma-dev zlib1g-dev
$ mkdir -p ~/.pip/cache
$ echo '[global]' > ~/.pip/pip.conf
$ echo 'download_cache = ~/.pip/cache' >> ~/.pip/pip.conf

$ cd /tmp
$ tar -zxf /path/to/your/Python-3.4.1.tgz
$ cd Python-3.4.0
$ ./configure --prefix=/usr/local/opt/python-3.4.1
$ make
$ sudo make install
$ cd /tmp
$ sudo rm -rf Python-3.4.1
BlackJack

@Papp Nase: Also wenn die Header-Dateien installiert sind, dann ist die Frage warum ``--configure`` die nicht findet. Da müsste man dann mal aufmerksam in dessen Ausgabe/Logdatei schauen.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

ok, muss die Headerdatei _tkinter.h in dem Paket von python3.4.1 sein (da ist ja auch tkinter mit drinnen enthalten), oder muss die separat aus einem anderen Verzeichnis stammen?
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

ich hab mal das gemacht:
$ ./configure --prefix=/usr/local/opt/python-3.4.1 >> configure.logfile

und dann

cat configure.logfile | grep tkinter (und auch _tkinter, tkin)
Es gibt keinerlei Wörter, kein Resultat mit dem greppen- wo das tkinter enthalten ist. Ist das schon eine Fehlerquelle?
BlackJack

@Papp Nase: ``configure`` schreibst selbst bereits ein recht umfangreiches Log. Bei mir wird zwar Tcl bzw. die ``tcl.h`` gefunden, aber es scheitert bei mir dann daran dass das Tcl8.5 was ich hier installiert habe keinen genügend grossen Typ für Unicode-Zeichen definiert.

Wheezy ist neuer als mein System, vielleicht liegt's bei Dir ja an etwas anderem.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Danke fuer die Antwort. Darum hab ich den Log ja in eine Datei umgeleitet und dann mit cat und grep nach tkinter und Variatonen davon gesucht und nichts gefunden.

tcl.h wird in dem Log garnicht gefunden und bei tcl steht:

Code: Alles auswählen

checking for --with-tcltk-includes... default
checking for --with-tcltk-libs... default
checking for UCS-4 tcl... no
Ist der Fehler vielleicht das bei UCS-4 tcl... NO steht?
BlackJack

@Papp Nase: Genau das ist auch das was bei mir ausgegeben wird.

Nur noch mal zur Sicherheit: Das Log ist nicht die Ausgabe die Du umgeleitet hast sondern eine Datei mit dem Namen ``config.log`` die von ``configure`` geschrieben wird ohne das man da irgendwas für machen müsste.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

ok, und hast Du das Problem irgendwie gelöst bei Deiner Distribution mit dem fehleden tcl?

Ich hab das hier noch gefunden:
http://shanit.blogspot.de/2011/03/confi ... plays.html
aber ich hab noch nicht so genau kapiert, was die da machen.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Sind eigentlich die Unterschiede zw. Python-3.2 und Python-3.4 groß? Bei Python3.2 (dass unter debian-wheezy vorhanden ist und tkinter auch drauf läuft) - funktioniert.

Meine Vorgabe lautet aber zur Zeit, Python-3.4.1 zu verwenden, weil Python 3.2.X zu fehlerbehaftet sei (nicht meine Aussage!) und nicht so gut wie Python-3.4.X. Aber wenn Python-3.4 in deb.wheezy nicht einfach so mit drinnen ist und von selber nachkompiliert werden muss - und da es bestimmt auch noch bei anderen schönen Paketen von Python so sein wird - wie eben in dem Link die Matplotlib - dann wird das bestimmt alles sehr kompliziert.

Ist denn Python-3.4.x soviel besser als das Python-3.2.x, so dass mein Chef recht hat, unbedingt mit dem neuesten Interpreter zu programmieren oder ist die ältere Version auch "brauchbar", und wenn der neue Nachfolger von wheezy dann stable ist, dann einfach die Programme, die auf 3.2.x programmiert wurden, dann auf 3.4.x laufen zu lassen - würde das ohne Probleme gehen?
BlackJack

@Papp Nase: Tcl ist ja da, passt halt nur nicht zu Python 3.4. Keine Ahnung ob Tcl 8.5 zu alt ist, oder ob man es mit UCS-4 neu kompilieren könnte. Ich löse das Problem in dem ich Python 2.7 benutze. ;-)
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Hmm, schade. Unter Windows läuft der Kram mit Python3.4.x und dem Interpreter, aber halt nicht auf dem Unix-System, aber es ist halt meine Vorgabe :-(

gibt es denn zw. Python 2.7 und Python 3.4 große Unterschiede oder lässt sich ein Python2.7 Programm später leicht für einen 3.4.x-Interpreter migrieren?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Papp Nase: Wenn Du Programme für Python 3.2 schreibst, sind die mit großer Wahrscheinlichkeit ohne Änderungen unter Python 3.4 ausführbar. Siehe dazu https://docs.python.org/3.4/whatsnew/3. ... python-3-4. Benutzt Du irgendwelche dieser Features, kannst Du Probleme beim Portieren bekommen.
Der größere Schritt war wohl der von 3.2 nach 3.3: https://docs.python.org/3.4/whatsnew/3.3.html, so dass viele Pakete Python 3.3 voraussetzen. Vor allem u'xx' macht das Leben von Paketschreibern, die sowohl 2.7 als auch 3.3+ unterstützen wollen, einfacher. 3.2 bleibt dann aber außen vor.
Wenn Du der einzige Programmierer in Deinem Projekt bist und nicht auf bestimmte Libraries angewiesen bist, kannst Du bei 3.2 bleiben.
Antworten