Hva er PYD-filformatet?
Python dynamiske moduler lagres som .pyd-filer på Windows-systemer. En .pyd-fil er en Windows DLL i PE (Portable Executable) binærformat, preget av at den eksporterer et PyInit_<modulnavn>-startpunkt som tolkeren kaller ved import. .pyd-moduler inneholder biblioteker som kan brukes av andre Python-applikasjoner; dynamiske biblioteker tillater raskere kodelasting og applikasjonsmodularitet. I motsetning til .pyc og .pyo bytecode-filer, er .pyd-filer spesifikke for Windows - .so-formatet har samme rolle på Linux og macOS.
.pyd-filer inneholder kompilerte Python-utvidelsesmoduler. Moduler inneholder ett eller flere navnerom, og Python-programmer som bruker slike moduler kan referere til funksjoner i disse modulene. Moduler kan brukes av flere Python-applikasjoner. Moderne bygg inkluderer en ABI-tagg i filnavnet - for eksempel cp312-win_amd64.pyd - som låser filen til en spesifikk CPython-versjon og bit-arkitektur. Oppretting og distribusjon av .pyd-moduler håndteres vanligvis av byggverktøy som Cython eller setuptools.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .pyd er innfødt kjørbar kode som Python kjører i samme prosess uten sandkasse, så en ondsinnet .pyd kan gjøre alt Python-programmet ditt kan. De praktiske risikoene: (1) en .pyd plassert i en mappe Python søker i kan kapre en import (DLL/PYD search-order hijacking), og (2) nedlasting av individuelle .pyd-filer fra tilfeldige nettsteder for å «fikse» en feil er en vektor for skadevare - reinstaller alltid den riktige pakken fra PyPI med pip i stedet. .pyd-filer i legitime pakker installert med pip er normale. Behandle en uventet, usignert .pyd i Nedlastinger eller en prosjektmappe med mistenksomhet og skann den.
Formatdetaljer
i et nøtteskallProgrammer som åpner PYD-filer
Tekniske detaljer
dyp spesifikasjon| Containerformat | Windows PE (Portable Executable) - samme binære container som `.dll`- og `.exe`-filer |
| Magic bytes | `MZ` (0x4D 0x5A) ved offset 0 (DOS stub); PE-signatur ved offset lagret ved 0x3C |
| Byterekkefølge | Little-endian |
| Viktig eksportert symbol | `PyInit_<modulnavn>` (Python 3) eller `init<modulnavn>` (Python 2) - CPythons importsystem kaller denne funksjonen for å initialisere modulen |
| ABI-filnavntag | Versjonstaggende bygg bruker mønsteret `navn.cpXYZ-win_amd64.pyd`; for eksempel er `cp312-win_amd64` rettet mot CPython 3.12 på 64-bit Windows |
| Plattform | Kun Windows; tilsvarende på Linux og macOS er et `.so` delt objekt |
| MIME-type | `application/octet-stream`; også registrert som `application/vnd.microsoft.portable-executable` |
| Typisk filstørrelse | 20 KB - flere MB; store innfødte biblioteker (f.eks. NumPy- eller SciPy-komponenter) kan nå titalls MB |
| Komprimering | Ingen - rå PE-seksjoner, ingen innebygd komprimering |
| Kodesignering | Valgfri Authenticode (PE) digital signatur; integritet er ellers uverifisert (innfødt maskinkode) |
| Tolk-kompatibilitet | Må samsvare med nøyaktig CPython-versjon, bit-arkitektur (32/64-bit) og ABI-tagg; en fil som ikke samsvarer vil gi `ImportError` ved import |
| Byggeverktøy | Vanligvis kompilert fra C, C++ eller Cython-kilde via setuptools `ext_modules`, CMake/scikit-build eller CFFI |
| Utgitt | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Siste versjon | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | docs.python.org |
PYD-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om PYD-filer.