Vad är filformatet PYD?
Dynamiska Python-moduler sparas som .pyd-filer på Windows-system. En .pyd-fil är en Windows DLL i binärformatet PE (Portable Executable), som kännetecknas av att den exporterar en PyInit_<modulnamn>-ingångspunkt som tolken anropar vid import. .pyd-moduler innehåller bibliotek som kan användas av andra Python-applikationer; dynamiska bibliotek möjliggör snabbare kodladdning och applikationsmodularitet. Till skillnad från bytecode-filerna .pyc och .pyo är .pyd-filer specifika för Windows - formatet .so har samma roll på Linux och macOS.
.pyd-filer innehåller kompilerade Python-tilläggsmoduler. Moduler innehåller ett eller flera namnrymder, och Python-program som använder sådana moduler kan referera till funktioner i dessa moduler. Moduler kan användas av flera Python-applikationer. Moderna byggen inkluderar en ABI-tagg i filnamnet - till exempel cp312-win_amd64.pyd - vilket låser filen till en specifik CPython-version och bit-arkitektur. Skapande och distribution av .pyd-moduler hanteras vanligtvis av byggverktyg som Cython eller setuptools.
Säkerhet & trygghet
RISK: MEDIUMEn .pyd är inbyggd körbar kod som Python kör i processen utan sandlåda, så en skadlig .pyd kan göra allt som ditt Python-program kan. De praktiska riskerna: (1) en .pyd som placeras i en mapp som Python söker i kan kapa en import (DLL/PYD search-order hijacking), och (2) att ladda ner enskilda .pyd-filer från slumpmässiga webbplatser för att «fixa» ett fel är en spridningsväg för skadlig kod - installera alltid det korrekta paketet från PyPI med pip istället. .pyd-filer inuti legitima pip-installerade paket är normala. Behandla en oväntad, osignerad .pyd i Hämtade filer eller en projektmapp med misstänksamhet och skanna den.
Formatdetaljer
i ett nötskalProgram som öppnar PYD-filer
Tekniska detaljer
djup specifikation| Containerformat | Windows PE (Portable Executable) - samma binära container som `.dll`- och `.exe`-filer |
| Magic bytes | `MZ` (0x4D 0x5A) vid offset 0 (DOS stub); PE-signatur vid offset lagrad vid 0x3C |
| Byteordning | Little-endian |
| Viktig exporterad symbol | `PyInit_<modulnamn>` (Python 3) eller `init<modulnamn>` (Python 2) - CPythons importsystem anropar denna funktion för att initiera modulen |
| ABI-filnamnstagg | Versionsmärkta byggen använder mönstret `namn.cpXYZ-win_amd64.pyd`; till exempel `cp312-win_amd64` är avsedd för CPython 3.12 på 64-bitars Windows |
| Plattform | Endast Windows; motsvarigheten för Linux och macOS är ett delat objekt av typen `.so` |
| MIME-typ | `application/octet-stream`; även registrerad som `application/vnd.microsoft.portable-executable` |
| Typisk filstorlek | 20 KB - flera MB; stora inbyggda bibliotek (t.ex. NumPy- eller SciPy-komponenter) kan nå tiotals MB |
| Komprimering | Ingen - råa PE-sektioner, ingen inbyggd komprimering |
| Kodsignering | Valfri digital Authenticode-signatur (PE); integriteten är annars overifierad (inbyggd maskinkod) |
| Tolkningskompatibilitet | Måste matcha exakt CPython-version, bit-arkitektur (32/64-bit) och ABI-tagg; en felaktig fil ger `ImportError` vid import |
| Byggverktyg | Vanligtvis kompilerad från C-, C++- eller Cython-källkod via setuptools `ext_modules`, CMake/scikit-build eller CFFI |
| Släppt | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Senaste version | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | docs.python.org |
PYD-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om PYD-filer.