Code funktioniert beim ersten Run, aber nicht bei weiteren Ausführungen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
3000
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 11:33

Ich habe ein kleines Python-Skript, das meine aktuelle IPv4-DNS-Serveradresse überprüft. Es funktioniert gut. Ich benutze das wmi-Paket.

Mein Script:

Code: Alles auswählen

import wmi
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True);
nic = nic_configs[0];
dns = nic.DNSServerSearchOrder[0];
Nun: Ich benutze dieses Skript in Kodi. Und beim ersten Mal läuft es perfekt. Aber ab dem zweiten Mal bekomme ich einen seltsamen Fehler (siehe unten).

Warum funktioniert mein Code beim ersten Mal, aber nicht bei den folgenden Versuchen?

Hat das was damit zutun, dass import wmi jedes Mal neu läuft?

Fehler:

Code: Alles auswählen

Error Type: <type 'exceptions.AttributeError'>
Error Contents: 'NoneType' object has no attribute 'platform'
Traceback (most recent call last):
File "C:\Python\Lib\site-packages\mytest.py", line 22, in <module>
import wmi
File "C:\Python\Lib\site-packages\wmi.py", line 88, in <module>
from win32com.client import GetObject, Dispatch
File "C:\Python\Lib\site-packages\win32com\__init__.py", line 6, in <module>
import pythoncom
File "C:\Python\Lib\site-packages\pythoncom.py", line 3, in <module>
pywintypes.__import_pywin32_system_module__("pythoncom", globals())
File "C:\Python\Lib\site-packages\pywintypes.py", line 20, in __import_pywin32_system_module__
if not sys.platform.startswith("win32"):
AttributeError: 'NoneType' object has no attribute 'platform'
-->End of Python script error report<--
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@3000: Irgendetwas scheint da mit den Python-Modulen komische Sachen machen. Der einzige Weg wie das `sys`-Modul auf ”legalem” Weg den Wert `None` haben kann ist beim beenden von Python, wenn nach und nach alle Objekte abgeräumt werden, und dann eben auch die Module.

Die Semikolons an den Zeilenenden machen übrigens keinen Sinn. Das ist Python und nicht C oder Java. In Python schliesst das die Anweisung nicht ab, sondern trennt Anweisungen in der gleichen Zeile voneinander. Da ist aber nur jeweils eine (sinnvolle) Anweisung in jeder Zeile. Getrennt von der leeren Anweisung.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
3000
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 11:33

was heißt das jetzt?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das da was kaputt ist. Das ist kein "normaler" Programmierfehler. Sondern irgendwer pfuscht da im Interpreter auf unheilige Art und Weise rum. Da kann man so halt sonst nix zu sagen. Ich wuerde das den Leuten von Kodi mitteilen.

Und mit dem mehrfachen import wmi hat das im uebrigen nix zu tun, das wird von Python problemlos gehandhabt.
3000
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 11:33

ok, danke für die Info!
Antworten