Hvad er PYD-filformatet?
Python dynamiske moduler gemmes som .pyd-filer på Windows-systemer. En .pyd-fil er en Windows DLL i PE (Portable Executable) binært format, kendetegnet ved at eksportere et PyInit_<modulename>-indgangspunkt, som fortolkeren kalder ved import. .pyd-moduler indeholder biblioteker, der kan bruges af andre Python-applikationer; dynamiske biblioteker giver hurtigere kodeindlæsning og applikationsmodularitet. I modsætning til .pyc og .pyo bytecode-filer er .pyd-filer specifikke for Windows - .so-formatet tjener samme rolle på Linux og macOS.
.pyd-filer indeholder kompilerede Python-udvidelsesmoduler. Moduler indeholder et eller flere navnerum, og Python-programmer, der bruger sådanne moduler, kan referere til funktioner i disse moduler. Moduler kan bruges af flere Python-applikationer. Moderne builds inkluderer et ABI-tag i filnavnet - for eksempel cp312-win_amd64.pyd - hvilket låser filen til en specifik CPython-version og bit-arkitektur. Oprettelse og distribuering af .pyd-moduler håndteres typisk af byggeværktøjer som Cython eller setuptools.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .pyd er indfødt eksekverbar kode, som Python kører i processen uden en sandkasse, så en ondsindet .pyd kan gøre alt, hvad dit Python-program kan. De praktiske risici: (1) en .pyd placeret i en mappe, som Python gennemsøger, kan kapre en import (DLL/PYD search-order hijacking), og (2) download af individuelle .pyd-filer fra tilfældige websteder for at «rette» en fejl er en malware-vektor - geninstaller altid den korrekte pakke fra PyPI med pip i stedet. .pyd-filer i legitime pip-installerede pakker er normale. Behandl en uventet, usigneret .pyd i Downloads eller en projektmappe med mistanke og scan den.
Formatdetaljer
kort fortaltProgrammer der åbner PYD-filer
Tekniske detaljer
dyb specifikation| Containerformat | Windows PE (Portable Executable) - den samme binære container som `.dll`- og `.exe`-filer |
| Magic bytes | `MZ` (0x4D 0x5A) ved offset 0 (DOS stub); PE-signatur ved det offset, der er gemt ved 0x3C |
| Byte-orden | Little-endian |
| Vigtigste eksporterede symbol | `PyInit_<modulename>` (Python 3) eller `init<modulename>` (Python 2) - CPythons importsystem kalder denne funktion for at initialisere modulet |
| ABI-filnavnstag | Versionsmærkede builds bruger mønsteret `navn.cpXYZ-win_amd64.pyd`; for eksempel målretter `cp312-win_amd64` CPython 3.12 på 64-bit Windows |
| Platform | Kun Windows; modstykket til Linux og macOS er et `.so` delt objekt |
| MIME-type | `application/octet-stream`; også registreret som `application/vnd.microsoft.portable-executable` |
| Typisk filstørrelse | 20 KB - flere MB; store indfødte biblioteker (f.eks. NumPy- eller SciPy-komponenter) kan nå op på ti-tals MB |
| Komprimering | Ingen - rå PE-sektioner, ingen indbygget komprimering |
| Kodesignering | Valgfri Authenticode (PE) digital signatur; integritet er ellers ikke verificeret (indfødt maskinkode) |
| Fortolker-kompatibilitet | Skal matche den præcise CPython-version, bit-arkitektur (32/64-bit) og ABI-tag; en fil, der ikke matcher, udløser `ImportError` ved import |
| Build-værktøjskæde | Typisk kompileret fra C-, C++- eller Cython-kilde via setuptools `ext_modules`, CMake/scikit-build eller CFFI |
| Udgivet | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Seneste version | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Åben standard | Ja · royaltyfri |
| Specifikation | docs.python.org |
PYD-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om PYD-filer.