ModuleNotFoundError: No module named ‚Tkinter‘

michi@localhost ~/python $ python maschenzaehler.py 
Traceback (most recent call last):
  File "/home/michi/python/maschenzaehler.py", line 1, in <module>
    import Tkinter as tk
ModuleNotFoundError: No module named 'Tkinter'
michi@localhost ~/python $ python maschenzaehler.py 
Traceback (most recent call last):
  File "/home/michi/python/maschenzaehler.py", line 1, in <module>
    import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

Diese Fehlermeldung weisst auf ein Problem mit dem GUI Tool für Python hin. In früheren Versionen wurde tkinter groß geschrieben. Wenn beide Versionen nicht funktionieren ist Python eventuell nicht mit dem erforderlichen USE Flag tk kompiliert worden. Dies kann nachgeholt werden:

root#USE="tk" emerge -av pyhton



Wenn Sie versuchen, Tkinter in Python-Code zu verwenden, muss der Import von Tkinter je nach den derzeit auf dem System installierten Python-Versionen möglicherweise auf verschiedene Arten durchgeführt werden: Bei Verwendung von Python 2.x.: Verwenden Sie import Tkinter Verwenden von Python 3.x: Verwenden Sie import tkinter (beachten Sie das Kleinbuchstaben T).

Ausserdem kann das USE-Flag tk in /etc/portage/package.use hinterlegt werden.

/etc/portage/make.conf
USE="tk"

Wenn mehrere Python Versionen installiert sind sollte auf die aktuelle Version aktualisiert und diese aktiviert werden.

localhost /home/michi # eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.7 (uninstalled)
  [2]   python3.9 (fallback)
  [3]   python3.8 (fallback)
  [4]   python2.7 (fallback)
localhost /home/michi # eselect python set 2
localhost /home/michi # env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...
localhost /home/michi # 

Welche Version aktiviert ist kann über die einfache Eingabe von python im Terminal überprüft werden.

localhost /home/michi # python
Python 3.9.1 (default, Dec 26 2020, 19:29:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Ein weiterer wichitger Punk ist das die Dateien im Python Verzeichniss hinterlegt werden müssen.

localhost /home/michi # python
Python 3.9.1 (default, Dec 26 2020, 19:29:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/home/michi'
>>> os.chdir ("/home/michi/python")
>>> os.getcwd()
'/home/michi/python'
>>> 

Eine interessante Seite für den Umstieg von Python 2 auf Python 3 unter Debian findest du hier: https://linuxconfig.org/how-to-change-default-python-version-on-debian-9-stretch-linux

spyder [4886:4886:1226/125338.508505:ERROR:zygote_host_impl_linux.c

localhost /home/michi # spyder
[4886:4886:1226/125338.508505:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

localhost /home/michi # spyder --no-sandboxusage: spyder [options] filesspyder: error: unrecognized arguments: --no-sandbox

Die Lösung ist: es kann spyder nur als User ausgeführt werden. Also durch #su username zum User wechseln und den Befehl spyder nochmals ausführen

grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn’t exist.

localhost ~ # grub-install /dev/sda
grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn’t exist. Please specify –target or –directory.

Grundlegende Infos zu GRUB unter Gentoo gibt es hier: https://wiki.gentoo.org/wiki/GRUB2

Bei diesem Fehler wurde ein guter Beitrag zur Recherche von Fehlern und erforderlichen Infos im Gentoo-Forum erstellt:

https://forums.gentoo.org/viewtopic-p-8543335.html?fbclid=IwAR0cR9AfLECScq6dsYJzUW6ZzIcI8Nxe5rqY4cVsyAxgHT49ZT_kOh6Ubow#8543335

!!! The ebuild selected to satisfy „dev-tcltk/tclpython“ has unmet requirements.

sysvorOrt /home/michi # emerge -avuND world

 * IMPORTANT: 10 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


These are the packages that would be merged, in order:

Calculating dependencies \

!!! Problem resolving dependencies for dev-tcltk/tclpython from @selected
... done!

!!! The ebuild selected to satisfy "dev-tcltk/tclpython" has unmet requirements.
- dev-tcltk/tclpython-5.0::gentoo USE="" ABI_X86="(64)" PYTHON_SINGLE_TARGET="-python3_6 -python3_7"

  The following REQUIRED_USE flag constraints are unsatisfied:
    exactly-one-of ( python_single_target_python3_6 python_single_target_python3_7 )

(dependency required by "@selected" [set])
(dependency required by "@world" [argument])
sysvorOrt /home/michi # 

Um dieses Problem zu beheben ist ein Eintrag in der /etc/portage/package.use erforderlich:

dev-tcltk/tclpython python_single_target_python3_7 

Die Version von Python (3_7) kann natürlich angepasst werden falls gewünscht.

tkinter.TclError: couldnt recognize data in image file

michi@sysvorOrt ~/python $ python mit-bild.py 
Traceback (most recent call last):
  File "mit-bild.py", line 4, in <module>
    logo = PhotoImage(file="grafik.jpg")
  File "/usr/lib/python3.8/tkinter/__init__.py", line 4061, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.8/tkinter/__init__.py", line 4006, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "grafik.jpg"


Zum anzeigen von Bildern im jpg-Format wird zusätzlich das PIL-Modul (Python Image Library) benötigt. Mit dem Tkinter eigenen tk.PhotoImage lassen sich nur die Bildformate gif und png anzeigen. Mit PIL lassen sich alle Bildformate anzeigen.

tkinter Fehler und Lösungen


Eine einfache Python Datei als Beispiel:

import tkinter as tk
from tkinter import *
counter = 0 
def counter_label(label):
  def count():
    global counter
    counter += 1
    label.config(text=str(counter))
    label.after(1000, count)
  count()
 
 

Als Test benannt ist sie wie folgt aufrufbar:

michi@sysvorOrt ~/python $ python test.py 
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from tkinter import *
  File "/home/michi/python/tkinter.py", line 3, in <module>
    tkFenster = tk()
NameError: name 'tk' is not defined

Allgemeine Infos zu einem tkinter Fehler

Dieser Fehler basiert auf einen Zugriff von Python in die grafische Oberfläche (GUI). Tkinter ist ein Teil zur Erstellung einer grafischen Oberfläche in der Programmiersprache Python.

Um Python zu nutzen muss die Programmiersprache mit dem USE-Flag tk kompiliert werden. Durch eselect kann die gewünscht Python Version festgelegt werden.

Installieren

Um tkinter zu erhalten, setzen Sie das Use-Flag tk für dev-lang / python:

Bearbeiten Sie /etc/portage/package.use
Setzen Sie das USE-Flag, indem Sie eine neue Zeile für Python hinzufügen:
dev-lang / python tk

in der Vergangenheit war die Flagge für Tkinter tcltk

Python neu kompilieren

sysvorOrt /home/michi/python # eselect python list
Available Python interpreters, in order of preference:
[1] python3.7
[2] python3.8 (fallback)
[3] python2.7 (fallback)
sysvorOrt /home/michi/python # python3.8
Python 3.8.5 (default, Oct 19 2020, 20:18:09)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.


Welche Version installiert ist kann durch den Aufruf von Python in der Kommandozeile nachgeschaut werden. In diesem Fall 3.8.5:


sysvorOrt /home/michi/python # python
Python 3.8.5 (default, Oct 19 2020, 20:18:09)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Dann gab es noch solch einen doofen Fehler von mir. Um tkinter zu nutzen muss es natürlich importiert werden.

>>> tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tkinter' is not defined
>>> import tkinter
>>> 

Ein Beispiel für einen Fehler in Bezug auf tkinter:

michi@sysvorOrt ~/python $ python uebung1.py 
Traceback (most recent call last):
  File "uebung1.py", line 1, in <module>
    import tkinter as tk
  File "/home/michi/python/tkinter.py", line 3, in <module>
    tkFenster = tk()
NameError: name 'tk' is not defined

Durch die Ausführung von #python -m tkinter kann überprüft werden ob tk erfolgreich installiert wurde und genutzt werden kann. Bei erfolgreicher Konfiguration wird folgendes Bild angezeigt:

Damit tkinter funktioniert muss das .py Programm in dem Arbeitsverzeichnes des Python ausgeführt werden. In diesem Fall ist es das Root Verzeichnis und wird auf /home/michi/python egändert. Bitte beachten: diese Änderung ist nur während der Session aktiv. Das Arbeitsverzeichnis wird wie folgt abgerufen und ggf. temporär geändert:

sysvorOrt / # python
Python 3.8.5 (default, Oct 26 2020, 17:00:05)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/'
>>> os.chdir ("/home/michi/python")
>>> os.getcwd()
'/home/michi/python'
>>> 

tkinter wird je nach Python – Version unterschiedlich geschrieben: Bei Verwendung von Python 2.x.: Verwenden Sie import Tkinter
Verwenden von Python 3.x: Verwenden Sie import tkinter (beachten Sie den Kleinbuchstaben T).
https://wiki.gentoo.org/wiki/Tkinter

bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.UTF8)
michi@here ~ $

Das Setzen der Keymap ueber setxkbmap funktioniert nur als root. Es kommt aber kein Fehler:

here /home/michi # su michi
michi@here ~ $ setxkbmap de
michi@here ~ $ 

michi@here ~ $ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
C.utf8
POSIX
de_DE
de_DE.iso88591
de_DE.iso885915@euro
de_DE@euro
michi@here ~ $

here /home/michi # nano -w /etc/locale.gen
here /home/michi # locale-gen
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.UTF8)

  • Generating 4 locales (this might take a while) with 6 jobs
  • (1/4) Generating de_DE.ISO-8859-1 … [ ok ]
  • (3/4) Generating de_DE.ISO-8859-15@euro … [ ok ]
  • (4/4) Generating C.UTF-8 … [ ok ]
  • (2/4) Generating de_DE.UTF-8 … [ ok ]
  • Generation complete
  • Adding locales to archive … [ ok ]
    here /home/michi #

here /home/michi # eselect locale list
Available targets for the LANG variable:
[1] C
[2] C.utf8
[3] de_DE
[4] de_DE@euro *
[5] de_DE.iso88591
[6] de_DE.iso885915@euro
[7] de_DE.utf8
[8] POSIX
[ ] (free form)
here /home/michi # eselect locale set 7
Setting LANG to de_DE.utf8 …
Run „. /etc/profile“ to update the variable in your shell.

Die Einstellung über Fluxbox funktioniert im grafischen Modus:

Hílfe für Soundprobs unter Gentoo

here /home/michi # dmesg | grep sound
[    0.993567] udevd[1479]: ctx=0x55f4440f6d80 path=/lib/modules/4.19.97-gentoo/kernel/sound/pci/hda/snd-hda-codec.ko error=No such file or directory
[    0.994849] udevd[1479]: ctx=0x55f4440f6d80 path=/lib/modules/4.19.97-gentoo/kernel/sound/pci/hda/snd-hda-codec.ko error=No such file or directory
[    5.395459] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9
[    5.395484] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10
[    5.395506] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11
[    5.395530] input: HDA Intel PCH Line Out as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12
[    5.395551] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13

Moin Allerseits. Ich bekomme keinen Sound unter Linux Gentoo. Ich habe mal alle Infos , die mir eingefallen sind, abgerufen. Falls Jemand noch eine braucht bitte Kontakt aufnehmen. Über Facebook oder hier:

here /home/michi # su michi                                                                                                                              
michi@here ~ $ groups                                                                                                                                    
wheel audio plugdev                                                                                                                                      
michi@here ~ $ speaker-test -c 2 -D front                                                                                                                

speaker-test 1.2.2                                                                                                                                      

Wiedergabe-Gerät ist front                                                                                                                               
Stream-Parameter sind 48000 Hz, S16_LE, 2 Kanäle                                                                                                         
Verwende 16 Oktaven rosa Rauschen                                                                                                                        
Rate ist 48000 Hz (angefordert: 48000 Hz)                                                                                                                
Puffergröße von 64 bis 16384                                                                                                                             
Periodengröße von 32 bis 8192                                                                                                                            
Verwende maximale Puffergröße 16384                                                                                                                      
Perioden = 4                                                                                                                    
gesetzt: period_size = 4096                                                                                                                              
gesetzt: buffer_size = 16384                                                                                                                             
 0 - Front Left                                                                                                                             
 1 - Front Right                                                                                                                                
Zeit pro Periode = 5,632531                                                                                                                              
 0 - Front Left                                                                                                                             
 1 - Front Right                                                                                                                                
Zeit pro Periode = 5,972964                                                                                                                              
 0 - Front Left                                                                                                                             
          
here /home/michi # cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf7120000 irq 125
here /home/michi # lspci | grep -i audio
00:1f.3 Audio device: Intel Corporation 200 Series PCH HD Audio
here /home/michi # 
here /home/michi # /etc/init.d/alsasound status
 * status: started
here /home/michi # lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 05e3:0751 Genesys Logic, Inc. microSD Card Reader
Bus 001 Device 005: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 007: ID 046a:b090 Cherry GmbH Keyboard
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
here /home/michi # lspci
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 0d)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop 9 Series) (rev 02)
00:14.0 USB controller: Intel Corporation 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller
00:16.0 Communication controller: Intel Corporation 200 Series PCH CSME HECI #1
00:17.0 SATA controller: Intel Corporation 200 Series PCH SATA controller [AHCI mode]
00:1c.0 PCI bridge: Intel Corporation 200 Series PCH PCI Express Root Port #5 (rev f0)
00:1d.0 PCI bridge: Intel Corporation 200 Series PCH PCI Express Root Port #11 (rev f0)
00:1d.3 PCI bridge: Intel Corporation 200 Series PCH PCI Express Root Port #12 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Device a2ca
00:1f.2 Memory controller: Intel Corporation 200 Series/Z370 Chipset Family Power Management Controller
00:1f.3 Audio device: Intel Corporation 200 Series PCH HD Audio
00:1f.4 SMBus: Intel Corporation 200 Series/Z370 Chipset Family SMBus Controller
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
here /home/michi #