Windows 8.1 und IDLE

Probleme bei der Installation?
Benutzeravatar
__blackjack__
User
Beiträge: 13079
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

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
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Dann in die selbe Datei den Import, den __blackjack__ vorgeschlagen hat.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Und anschließend auf der Kommandozeile ein:

Code: Alles auswählen

C:\Program Files\Python311-32\python.exe -m idlelib
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

sparrow hat geschrieben: Sonntag 6. November 2022, 17:26 Dann in die selbe Datei den Import, den __blackjack__ vorgeschlagen hat.
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.
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

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. **
Benutzeravatar
__blackjack__
User
Beiträge: 13079
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?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

__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?
Die habe ich nicht gefunden. Wo müsste Sie denn sein?
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

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.
Zuletzt geändert von sparrow am Mittwoch 9. November 2022, 20:30, insgesamt 1-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

@__blackjack__: Laut meiner Testinstallation sind das die beiden Dateien aus meinem Post. Eine _tkinter.dll finde ich dort nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
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'>
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

@__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'>
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

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...
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

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'>
Eine _tkinter.pyd ist ebenfalls in dem Verzeichnis DLLs bei mir vorhanden....
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

__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.
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?

C:\Program Files\Python311-32\Scripts\;C:\Program Files\Python311-32\;
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

sys.path haben wir in dem Programmschnipsel, den du bereits ausgeführt hast, ausgegeben. Und darin war das DLLs Verzeichnis enthalten.
amifi
User
Beiträge: 18
Registriert: Montag 24. Oktober 2022, 15:45

sparrow hat geschrieben: Donnerstag 10. November 2022, 06:02 sys.path haben wir in dem Programmschnipsel, den du bereits ausgeführt hast, ausgegeben. Und darin war das DLLs Verzeichnis enthalten.
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?
Antworten