Qu'est-ce que le format de fichier PYD ?
Les modules dynamiques Python sont enregistrés sous forme de fichiers .pyd sur les systèmes Windows. Un fichier .pyd est une DLL Windows au format binaire PE (Portable Executable), se distinguant par l'exportation d'un point d'entrée PyInit_<modulename> que l'interpréteur appelle lors de l'importation. Les modules .pyd contiennent des bibliothèques utilisables par d'autres applications Python ; les bibliothèques dynamiques permettent un chargement de code plus rapide et une modularité de l'application. Contrairement aux fichiers de bytecode .pyc et .pyo, les fichiers .pyd sont spécifiques à Windows - le format .so remplit le même rôle sur Linux et macOS.
Les fichiers .pyd contiennent des modules d'extension Python compilés. Les modules contiennent un ou plusieurs espaces de noms, et les programmes Python utilisant ces modules peuvent se référer aux fonctions qu'ils contiennent. Les modules peuvent être utilisés par plusieurs applications Python. Les builds modernes incluent une balise ABI dans le nom du fichier - par exemple, cp312-win_amd64.pyd - verrouillant le fichier à une version spécifique de CPython et à une architecture donnée. La création et la distribution de modules .pyd sont généralement gérées par des outils de construction tels que Cython ou setuptools.
Sécurité et sûreté
RISQUE : MEDIUMUn .pyd est un code exécutable natif que Python exécute dans son propre processus sans bac à sable, donc un .pyd malveillant peut faire tout ce que votre programme Python peut faire. Les risques pratiques : (1) un .pyd placé dans un dossier parcouru par Python peut détourner une importation (détournement de l'ordre de recherche DLL/PYD), et (2) le téléchargement de fichiers .pyd individuels depuis des sites aléatoires pour « corriger » une erreur est un vecteur de logiciels malveillants - réinstallez toujours le paquet approprié depuis PyPI avec pip à la place. Les fichiers .pyd à l'intérieur de paquets légitimes installés par pip sont normaux. Traitez tout .pyd inattendu ou non signé dans les Téléchargements ou un dossier de projet avec suspicion et scannez-le.
Détails du format
en brefProgrammes qui ouvrent les fichiers PYD
Détails techniques
spécifications approfondies| Format de conteneur | Windows PE (Portable Executable) - le même conteneur binaire que les fichiers `.dll` et `.exe` |
| Octets magiques | `MZ` (0x4D 0x5A) à l'offset 0 (stub DOS) ; signature PE à l'offset stocké à 0x3C |
| Ordre des octets | Little-endian |
| Symbole exporté clé | `PyInit_<modulename>` (Python 3) ou `init<modulename>` (Python 2) - le système d'importation de CPython appelle cette fonction pour initialiser le module |
| Balise de nom de fichier ABI | Les builds avec balise de version utilisent le modèle `name.cpXYZ-win_amd64.pyd` ; par exemple `cp312-win_amd64` cible CPython 3.12 sur Windows 64 bits |
| Plateforme | Windows uniquement ; l'équivalent Linux et macOS est un objet partagé `.so` |
| Type MIME | `application/octet-stream` ; également enregistré comme `application/vnd.microsoft.portable-executable` |
| Taille de fichier typique | 20 Ko - plusieurs Mo ; les bibliothèques natives volumineuses (ex: composants NumPy ou SciPy) peuvent atteindre des dizaines de Mo |
| Compression | Aucune - sections PE brutes, pas de compression intégrée |
| Signature de code | Signature numérique Authenticode (PE) facultative ; l'intégrité n'est autrement pas vérifiée (code machine natif) |
| Compatibilité de l'interpréteur | Doit correspondre exactement à la version de CPython, à l'architecture (32/64 bits) et à la balise ABI ; un fichier non correspondant lève une erreur `ImportError` lors de l'importation |
| Chaîne d'outils de construction | Généralement compilé à partir de sources C, C++ ou Cython via les `ext_modules` de setuptools, CMake/scikit-build ou CFFI |
| Publié | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Dernière version | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Standard ouvert | Oui · libre de droits |
| Spécification | docs.python.org |
Conversions PYD
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers PYD.