O que é o formato de ficheiro PYD?
Módulos dinâmicos Python são salvos como arquivos .pyd em sistemas Windows. Um arquivo .pyd é uma DLL do Windows no formato binário PE (Portable Executable), distinguido por exportar um ponto de entrada PyInit_<modulename> que o interpretador chama ao importar. Módulos .pyd contêm bibliotecas que podem ser usadas por outras aplicações Python; bibliotecas dinâmicas permitem um carregamento de código mais rápido e modularidade da aplicação. Em contraste com os arquivos de bytecode .pyc e .pyo, os arquivos .pyd são específicos para Windows - o formato .so desempenha a mesma função no Linux e macOS.
Arquivos .pyd contêm módulos de extensão Python compilados. Módulos contêm um ou mais namespaces, e programas Python que usam tais módulos podem se referir a funções nesses módulos. Módulos podem ser usados por múltiplas aplicações Python. Builds modernos incluem uma tag ABI no nome do arquivo - por exemplo, cp312-win_amd64.pyd - vinculando o arquivo a uma versão específica do CPython e arquitetura de bits. A criação e distribuição de módulos .pyd é tipicamente gerenciada por ferramentas de build como Cython ou setuptools.
Segurança e proteção
RISCO: MEDIUMUm .pyd é código executável nativo que o Python executa no processo sem sandbox, portanto, um .pyd malicioso pode fazer qualquer coisa que seu programa Python possa. Os riscos práticos: (1) um .pyd colocado em uma pasta que o Python pesquisa pode sequestrar uma importação (DLL/PYD search-order hijacking), e (2) baixar arquivos .pyd individuais de sites aleatórios para «corrigir» um erro é um vetor de malware - sempre reinstale o pacote adequado do PyPI com o pip. Arquivos .pyd dentro de pacotes legítimos instalados via pip são normais. Trate um .pyd inesperado e não assinado em Downloads ou em uma pasta de projeto com suspeita e escaneie-o.
Detalhes do formato
em resumoProgramas que abrem arquivos PYD
Detalhes técnicos
especificação profunda| Formato de contêiner | Windows PE (Portable Executable) - o mesmo contêiner binário que arquivos `.dll` e `.exe` |
| Magic bytes | `MZ` (0x4D 0x5A) no deslocamento 0 (stub DOS); assinatura PE no deslocamento armazenado em 0x3C |
| Ordem dos bytes | Little-endian |
| Símbolo exportado chave | `PyInit_<modulename>` (Python 3) ou `init<modulename>` (Python 2) - o sistema de importação do CPython chama esta função para inicializar o módulo |
| Tag ABI no nome do arquivo | Builds com tag de versão usam o padrão `nome.cpXYZ-win_amd64.pyd`; por exemplo `cp312-win_amd64` visa o CPython 3.12 no Windows de 64 bits |
| Plataforma | Apenas Windows; o equivalente para Linux e macOS é um objeto compartilhado `.so` |
| Tipo MIME | `application/octet-stream`; também registrado como `application/vnd.microsoft.portable-executable` |
| Tamanho de arquivo típico | 20 KB - vários MB; bibliotecas nativas grandes (ex: componentes NumPy ou SciPy) podem chegar a dezenas de MB |
| Compressão | Nenhuma - seções PE brutas, sem compressão embutida |
| Assinatura de código | Assinatura digital Authenticode (PE) opcional; caso contrário, a integridade não é verificada (código de máquina nativo) |
| Compatibilidade do interpretador | Deve corresponder à versão exata do CPython, arquitetura de bits (32/64 bits) e tag ABI; um arquivo incompatível gera `ImportError` na importação |
| Cadeia de ferramentas de build | Tipicamente compilado de código-fonte C, C++ ou Cython via setuptools `ext_modules`, CMake/scikit-build ou CFFI |
| Lançado | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| Versão mais recente | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | docs.python.org |
Conversões de PYD
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos PYD.