Was ist das PYD-Dateiformat?
Python-Dynamikmodule werden auf Windows-Systemen als .pyd-Dateien gespeichert. Eine .pyd-Datei ist eine Windows-DLL im PE-Binärformat (Portable Executable), die sich dadurch auszeichnet, dass sie einen PyInit_<modulename>-Einstiegspunkt exportiert, den der Interpreter beim Import aufruft. .pyd-Module enthalten Bibliotheken, die von anderen Python-Anwendungen verwendet werden können; dynamische Bibliotheken ermöglichen ein schnelleres Laden von Code und eine modulare Anwendungsstruktur. Im Gegensatz zu .pyc- und .pyo-Bytecode-Dateien sind .pyd-Dateien spezifisch für Windows - das .so-Format übernimmt dieselbe Rolle unter Linux und macOS.
.pyd-Dateien enthalten kompilierte Python-Erweiterungsmodule. Module enthalten einen oder mehrere Namensräume, und Python-Programme, die solche Module verwenden, können auf Funktionen in diesen Modulen verweisen. Module können von mehreren Python-Anwendungen genutzt werden. Moderne Builds enthalten ein ABI-Tag im Dateinamen - zum Beispiel cp312-win_amd64.pyd - wodurch die Datei an eine bestimmte CPython-Version und Bittiefe gebunden wird. Die Erstellung und Verteilung von .pyd-Modulen wird normalerweise von Build-Tools wie Cython oder setuptools übernommen.
Sicherheit
RISIKO: MEDIUMEine .pyd ist nativer ausführbarer Code, den Python prozessintern ohne Sandbox ausführt, sodass eine bösartige .pyd alles tun kann, was Ihr Python-Programm tun kann. Die praktischen Risiken: (1) Eine .pyd, die in einen Ordner abgelegt wird, den Python durchsucht, kann einen Import kapern (DLL/PYD Search-Order Hijacking), und (2) das Herunterladen einzelner .pyd-Dateien von beliebigen Websites zur „Fehlerbehebung“ ist ein Malware-Vektor - installieren Sie stattdessen immer das richtige Paket von PyPI mit pip. .pyd-Dateien innerhalb legitimer, per pip installierter Pakete sind normal. Behandeln Sie eine unerwartete, unsignierte .pyd in Downloads oder einem Projektordner mit Misstrauen und scannen Sie diese.
Formatdetails
kurz gefasstProgramme zum Öffnen von PYD-Dateien
Technische Details
technische Spezifikation| Container-Format | Windows PE (Portable Executable) - derselbe Binärcontainer wie bei `.dll`- und `.exe`-Dateien |
| Magic Bytes | `MZ` (0x4D 0x5A) bei Offset 0 (DOS-Stub); PE-Signatur bei dem unter 0x3C gespeicherten Offset |
| Byte-Reihenfolge | Little-endian |
| Wichtiges exportiertes Symbol | `PyInit_<modulename>` (Python 3) oder `init<modulename>` (Python 2) - das Importsystem von CPython ruft diese Funktion auf, um das Modul zu initialisieren |
| ABI-Dateinamen-Tag | Versionsgetaggte Builds verwenden das Muster `name.cpXYZ-win_amd64.pyd`; zum Beispiel zielt `cp312-win_amd64` auf CPython 3.12 unter 64-Bit-Windows ab |
| Plattform | Nur Windows; das Äquivalent für Linux und macOS ist ein `.so` Shared Object |
| MIME-Typ | `application/octet-stream`; auch registriert als `application/vnd.microsoft.portable-executable` |
| Typische Dateigröße | 20 KB - mehrere MB; große native Bibliotheken (z. B. NumPy- oder SciPy-Komponenten) können zig MB erreichen |
| Kompression | Keine - rohe PE-Sektionen, keine integrierte Kompression |
| Codesignatur | Optionale digitale Authenticode-Signatur (PE); die Integrität ist ansonsten unverifiziert (nativer Maschinencode) |
| Interpreter-Kompatibilität | Muss exakt mit der CPython-Version, der Bittiefe (32/64-Bit) und dem ABI-Tag übereinstimmen; eine nicht passende Datei löst beim Import einen `ImportError` aus |
| Build-Toolchain | Normalerweise aus C-, C++- oder Cython-Quellen via setuptools `ext_modules`, CMake/scikit-build oder CFFI kompiliert |
| Veröffentlicht | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Neueste Version | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | docs.python.org |
PYD-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu PYD-Dateien.