Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
development:python:windows [2019-04-09 18:01] Martin Prochnowdevelopment:python:windows [2019-04-09 18:03] Martin Prochnow
Zeile 1: Zeile 1:
 ====== Windows ====== ====== Windows ======
- 
-===== Schnipsel ===== 
-Modalen Dialog anzeigen: 
-<sxh python> 
-import os, sys, ctypes 
- 
-ctypes.windll.user32.MessageBoxA(0, 
-    "curdir: %s\nexedir: %s\nsys.winver: %s" % ( 
-        os.path.abspath(os.curdir), 
-        os.path.abspath(os.path.dirname(sys.argv[0])), 
-        sys.winver, 
-    ), "%s - Message" % os.path.basename(sys.executable), 0x30 
-) 
-</sxh> 
  
 ===== COM-Wrapper-Klassen erstellen ===== ===== COM-Wrapper-Klassen erstellen =====
Zeile 27: Zeile 13:
 makepy.main() makepy.main()
 </sxh> </sxh>
 +
 +===== Nutzung von IPv4 erzwingen =====
 +Unter neueren Windows-Versionen wird unter Python bei der Namensauflösung für Windows-Rechner (z.B. auch //localhost//) zuerst eine IPv6-Adresse zurückgegeben. Wenn der anzusprechende Server aber kein IPv6 spricht, kommt es aufgrund der entsprechenden Timeouts zu Verzögerungen beim Verbindungsaufbau.
 +
 +Eine Lösung wäre es natürlich, IPv6 im Betriebssystem zu deaktivieren. Das hat aber was von "mit Kanonen auf Spatzen schießen". Man kann Python auch dazu überreden, bei der Namensauflösung nur IPv4-Adressen zu berücksichtigen.
 +
 +<sxh python>
 +import socket
 +origGetAddrInfo = socket.getaddrinfo
 +
 +def getAddrInfoWrapper(host, port, family = 0, socktype = 0, proto = 0, flags = 0):
 +    return origGetAddrInfo(host, port, socket.AF_INET, socktype, proto, flags)
 +
 +socket.getaddrinfo = getAddrInfoWrapper
 +</sxh>
 +
 +[[http://stackoverflow.com/questions/2014534/force-python-mechanize-urllib2-to-only-use-a-requests/6319043#6319043|Quelle]]
  
 ===== Windows-Service ===== ===== Windows-Service =====
Zeile 36: Zeile 39:
 import inspect import inspect
 path = inspect.currentframe().f_code.co_filename path = inspect.currentframe().f_code.co_filename
 +</sxh>
 +
 +===== Schnipsel =====
 +Modalen Dialog anzeigen:
 +<sxh python>
 +import os, sys, ctypes
 +
 +ctypes.windll.user32.MessageBoxA(0,
 +    "curdir: %s\nexedir: %s\nsys.winver: %s" % (
 +        os.path.abspath(os.curdir),
 +        os.path.abspath(os.path.dirname(sys.argv[0])),
 +        sys.winver,
 +    ), "%s - Message" % os.path.basename(sys.executable), 0x30
 +)
 </sxh> </sxh>
  
 {{tag>Python Windows}} {{tag>Python Windows}}
  
  • Zuletzt geändert: 2019-07-26 15:02