Windows 8.1 und IDLE
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Oder einfach mal ein ``import tkinter`` um zu sehen was da tatsächlich passiert.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Hallo 
Ich habe den Text mal in die Datei Debugging.py kopiert und ausführen lassen. Das ist das Ergebnis:
C:\Program Files\Python311-32>python Debugging.py
3.11.0 (main, Oct 24 2022, 18:13:38) [MSC v.1933 32 bit (Intel)]
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib has tkinter: True
C:\Program Files\Python311-32\DLLs has tkinter: False
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib\site-packages has tkinter: False

Ich habe den Text mal in die Datei Debugging.py kopiert und ausführen lassen. Das ist das Ergebnis:
C:\Program Files\Python311-32>python Debugging.py
3.11.0 (main, Oct 24 2022, 18:13:38) [MSC v.1933 32 bit (Intel)]
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib has tkinter: True
C:\Program Files\Python311-32\DLLs has tkinter: False
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib\site-packages has tkinter: False
Und anschließend auf der Kommandozeile ein:
Code: Alles auswählen
C:\Program Files\Python311-32\python.exe -m idlelib
Ok. Ergibt das hier
C:\Program Files\Python311-32>python Debugging.py
Traceback (most recent call last):
File "C:\Program Files\Python311-32\Debugging.py", line 1, in <module>
import tkinter
File "C:\Program Files\Python311-32\Lib\tkinter\__init__.py", line 38, in <mod
ule>
import _tkinter # If this fails your Python may not be configured for Tk
^^^^^^^^^^^^^^^
ImportError: DLL load failed while importing _tkinter: Das angegebene Modul wurd
e nicht gefunden.
sparrow hat geschrieben: ↑Sonntag 6. November 2022, 18:04 Und anschließend auf der Kommandozeile ein:
Code: Alles auswählen
C:\Program Files\Python311-32\python.exe -m idlelib
Dann kommt das hier raus.
C:\Program Files\Python311-32>python.exe -m idlelib
** IDLE can't import Tkinter.
Your Python may not be configured for Tk. **
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Gibt es die _tkinter.dll denn? Kann es eventuell sein, dass Du einen Virenscanner laufen hast, der denkt die wäre gefährlich und der diese Datei deshalb gelöscht oder verschoben hat?
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Die habe ich nicht gefunden. Wo müsste Sie denn sein?__blackjack__ hat geschrieben: ↑Dienstag 8. November 2022, 07:54 Gibt es die _tkinter.dll denn? Kann es eventuell sein, dass Du einen Virenscanner laufen hast, der denkt die wäre gefährlich und der diese Datei deshalb gelöscht oder verschoben hat?
In dem Verzeichnis Python\DLLs (in deinem Fall also C:\Program Files\Python311-32\DLLs) befinden sich eine tcl*.dll und eine tk*.dll
Zumindest unter Python 3.10 heißen sie tcl86t.dll und tk86t.dll.
Wenn eine vom den beiden nicht vorhanden sind, kommt es zu dem entsprechenden Fehler.
Zumindest unter Python 3.10 heißen sie tcl86t.dll und tk86t.dll.
Wenn eine vom den beiden nicht vorhanden sind, kommt es zu dem entsprechenden Fehler.
Zuletzt geändert von sparrow am Mittwoch 9. November 2022, 20:30, insgesamt 1-mal geändert.
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@amifi: Irgendwo in den Pfaden die in `sys.path` stehen. Wenn die Datei nicht da ist, IDLE aber installiert wurde, stellt sich wieder die Frage ob irgendeine Antivirensoftware zugeschlagen hat und dachte die Datei wäre gefährlich.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sparrow: Hat vielleicht eine andere Endung aber es muss eine _tkinter.irgendwas geben die eine Anbindung an diese DLLs enthält. Denn das `_tkinter`-Modul ist ja das was nicht importiert werden kann. Also das Äquivalent zu dieser Datei unter Linux:
Code: Alles auswählen
In [104]: import _tkinter
In [105]: _tkinter
Out[105]: <module '_tkinter' from '/usr/lib/python3.8/lib-dynload/_tkinter.cpython-38-x86_64-linux-gnu.so'>
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
@__blackjack__: Es gibt eine _tkinter.pyd. Wenn man die entfernt, kommt es zwar zu einem ImportError - aber ohne den DLL Hinweis. Deshalb muss eigentlich eine der beiden DLLs fehlen. Das war die einzige Möglichkeit, die ich gefunden habe, die genau das bewirkt.
Code: Alles auswählen
>>> import _tkinter
>>> _tkinter
<module '_tkinter' from 'c:\\Python310\\DLLs\\_tkinter.pyd'>
sparrow hat geschrieben: ↑Mittwoch 9. November 2022, 20:14 In dem Verzeichnis Python\DLLs (in deinem Fall also C:\Program Files\Python311-32\DLLs) befinden sich eine tcl*.dll und eine tk*.dll
Zumindest unter Python 3.10 heißen sie tcl86t.dll und tk86t.dll.
Wenn eine vom den beiden nicht vorhanden sind, kommt es zu dem entsprechenden Fehler.
Die tcl86t.dll und die sind tk86t.dll sind tatsächlich beide in dem Verzeichnis
C:\Program Files\Python311-32\DLLs
bei mir auf dem Rechner...
Eine _tkinter.pyd ist ebenfalls in dem Verzeichnis DLLs bei mir vorhanden....sparrow hat geschrieben: ↑Mittwoch 9. November 2022, 20:43 @__blackjack__: Es gibt eine _tkinter.pyd. Wenn man die entfernt, kommt es zwar zu einem ImportError - aber ohne den DLL Hinweis. Deshalb muss eigentlich eine der beiden DLLs fehlen. Das war die einzige Möglichkeit, die ich gefunden habe, die genau das bewirkt.
Code: Alles auswählen
>>> import _tkinter >>> _tkinter <module '_tkinter' from 'c:\\Python310\\DLLs\\_tkinter.pyd'>
Habe sämtliche Antivirentools deaktiviert, ist aber immer noch der gleiche Fehler nach Neuinstallation von Python. Was meinst Du genau mit sys.path? Wo ist die Datei unter Windows? Falls die Umgebungsvariablen gemeint sind unter System, dort steht nur das. Ist das richtig so?__blackjack__ hat geschrieben: ↑Mittwoch 9. November 2022, 20:22 @amifi: Irgendwo in den Pfaden die in `sys.path` stehen. Wenn die Datei nicht da ist, IDLE aber installiert wurde, stellt sich wieder die Frage ob irgendeine Antivirensoftware zugeschlagen hat und dachte die Datei wäre gefährlich.
C:\Program Files\Python311-32\Scripts\;C:\Program Files\Python311-32\;
Du meinst das hier?
import sys
import pathlib
print(sys.version)
for sys_path in sys.path:
path = pathlib.Path(sys_path)
if path.is_dir():
names = [subfile.name for subfile in path.iterdir()]
tkinter_found = "tkinter" in names
print(f"{path} has tkinter: {tkinter_found}")
wo die Ausgabe das war, oder?
C:\Program Files\Python311-32>python Debugging.py
3.11.0 (main, Oct 24 2022, 18:13:38) [MSC v.1933 32 bit (Intel)]
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib has tkinter: True
C:\Program Files\Python311-32\DLLs has tkinter: False
C:\Program Files\Python311-32 has tkinter: False
C:\Program Files\Python311-32\Lib\site-packages has tkinter: False
Demnach sind die Dateien hier:
C:\Program Files\Python311-32\DLLs
aber da sind sie tatsächlich ja auch
Die tcl86t.dll und die tk86t.dll und auch die _tkinter.pyd....
Gibts sonst noch eine Möglichkeit, was ich überprüfen kann?