[Python-de] py2exe und die Relevanz der pythonXX.dll Namensgebung

Martin v. Löwis martin at v.loewis.de
Sam Sep 6 01:26:25 CEST 2003


Gerson.Kurz at t-online.de (Gerson Kurz) writes:

> run_srv.exe aus dem py2exe-Setup für Python2.3 verlinkt auf die
> PyWinTypes22.dll, welche auf die python22.dll verlinkt, welche sich mit der
> python23.dll nicht so recht verträgt.

Warum hast Du nicht einfach PythonWin für Python 2.3 installiert?

> So habe ich das schon mehrfach gemacht (z.B. um PIL in 2.3 benutzen dank
> "The Free Hexeditor" ;). Wer kann mir bitte nochmal erklären, warum man auf
> die ***ZENSIERT*** Idee mit "pythonxx.dll" kam (die mir so aus keinem
> anderen NT-Projekt bekannt ist und, so leid es mir tut, ich kenne das eine
> oder andere NT-Projekte seit 1994) ???

Was ist mit msvcrt.dll, msvcrt4.dll, msvcr7.dll, msvcr71.dll? Oder mit
tcl83.dll, tcl84.dll?

Die verschiedenen Python-Versionen haben schlicht und einfach
verschiedene APIs - die Funktion Foo in python22.dll erwartet ein
anderes Strukturlayout also die Funktion gleichen Namens in
python23.dll. Anwendungen, die für python22.dll übersetzt wurden,
werden also nicht mehr funktionieren und vielleicht abstürzen, wenn
sie plötzlich python23.dll benutzen.

> DLLs linkt man *dynamisch*, d.h. man kann auch zur Laufzeit ermitteln, ob
> 'ne Funktion da ist oder nicht. Und structs haben ein Size-Element.

Wo haben structs ein Size-Element? Was ist, wenn eine struct in
Version 2.2 ein Feld hat, und in 2.3 dieses nämliche Feld wegoptimiert
wurde?

> Die Win32-DLLs haben ja auch seit Menschengedenken die gleichen
> albernen Namen und wachsen mit jedem neuen Release um neue
> Funktionen.

Ja, da garantiert Microsoft Kompatibilität - neue Funktionen heißen
dann einfach CreateWindowExW oder so, während sie früher bloß
CreateWindow hießen.

Bei MSVC garantiert Microsoft hingegen keine Kompatibilität - die
verschiedenen Versionen der C-Bibliothek sind schlicht inkompatibel,
und wenn man sie mischt, passieren lauter komische Effekte.

Ciao,
Martin