Converter pyo para py

Converter PYO para PY

Recuperar código-fonte Python legível a partir de bytecode otimizado legado do Python 2.

Como converter pyo para py arquivo

Softwares antigos em Python 2 podem fornecer apenas um arquivo .pyo quando um editor, sistema de revisão de código ou projeto de manutenção exige um código-fonte .py legível. A conversão exige descompilação porque um arquivo PYO não contém o texto-fonte original.

O que é o formato PYO

Um arquivo PYO é bytecode Python otimizado produzido pelo Python 2 quando o código é executado com -O ou -OO. O Python 2 normalmente o armazenava ao lado do código-fonte como module.pyo; o Python 3.5 e versões posteriores removeram o formato PYO separado e armazenam bytecode otimizado como arquivos .pyc identificados por tags.

Você pode encontrar arquivos PYO em aplicações Python 2 arquivadas, softwares de dispositivos incorporados e diretórios de instalação antigos contendo arquivos como __init__.pyo. PYO é bytecode compilado para o interpretador Python, não uma cópia compactada ou renomeada do arquivo .py original.

O que é o formato PY

Um arquivo PY é código-fonte Python em texto simples que pode ser aberto, editado, pesquisado, versionado e executado com um interpretador compatível. É o formato esperado por editores de código-fonte, repositórios de código, linters e pela maioria das ferramentas de desenvolvimento.

A descompilação pode recriar código Python com aparência executável, mas normalmente não consegue restaurar comentários, espaços em branco originais, comentários de codificação do código-fonte, formatação exata ou construções do código-fonte descartadas durante a compilação. Muitos nomes permanecem no bytecode, mas não há garantia de que correspondam aos nomes pretendidos pelo autor.

Como converter PYO em PY

  1. Identifique a versão do bytecode. Uma extensão .pyo geralmente indica Python 2, mas o bytecode do Python 2.5, 2.6 e 2.7 é diferente. Use a aplicação relacionada, sua documentação ou uma ferramenta de inspeção de bytecode para determinar a versão a partir do cabeçalho do arquivo. O descompilador deve ser compatível com essa versão.
  2. Preserve o original. Trabalhe em uma cópia e evite executar um arquivo PYO não confiável. Se o arquivo contiver código proprietário, não o envie a um serviço de terceiros sem autorização.
  3. Instale um descompilador local. uncompyle6 é uma opção open-source comumente usada para bytecode Python; instale-o em um ambiente isolado com python -m pip install uncompyle6. pycdc, compilado a partir de seu repositório oficial, é outra opção local. Verifique as versões de bytecode compatíveis com cada projeto antes de escolhê-lo.
  4. Execute o descompilador. Por exemplo, uncompyle6 -o recovered module.pyo grava os arquivos recuperados em recovered. Algumas versões ou wrappers podem rejeitar o sufixo .pyo, embora o arquivo contenha bytecode Python 2 padrão. Nesse caso, copie-o para module.pyc e tente novamente; renomear altera apenas o nome do arquivo, não o bytecode.
  5. Capture a saída padrão quando necessário. Se a ferramenta imprimir o código-fonte em vez de criar um arquivo, use uncompyle6 module.pyo > module.py. Inspecione o resultado antes de substituir qualquer código-fonte existente.
  6. Valide com o interpretador correspondente. Primeiro, verifique a saída do Python 2 com um interpretador Python 2 adequado, como python2 recovered/module.py, em um ambiente controlado. Corrija manualmente os erros do descompilador e depois porte o código para Python 3 com ferramentas como 2to3, quando apropriado; o port automático não substitui os testes.

Nenhuma operação comum de renomeação, extração de arquivo ou exportação de texto converte PYO em código-fonte. Conversores online confiáveis geralmente não são uma recomendação prática para esse formato: o suporte depende da versão exata do bytecode Python, e o envio de software proprietário expõe seu código. Um descompilador local é mais seguro e geralmente mais confiável.

Limites de qualidade e compatibilidade

A descompilação é uma aproximação. Comentários, formatação, sintaxe exclusiva do código-fonte e parte da organização original são perdidos. A compilação do Python 2 com -O remove instruções de asserção; -OO também remove docstrings. Portanto, o arquivo recuperado pode diferir em comportamento ou documentação mesmo quando é executado.

Revise a indentação, o tratamento de exceções, os geradores, os decorators, as codificações de strings, as importações e o fluxo de controle. Um descompilador pode produzir erros de sintaxe ou código sutilmente incorreto quando não oferece suporte completo à versão do bytecode ou a uma construção específica do compilador.

Um arquivo PYO também pode depender de módulos de pacotes, arquivos de dados, extensões nativas, variáveis de ambiente e de um diretório de trabalho específico. Uma conversão bem-sucedida produz texto-fonte, não uma aplicação substituta autocontida.

Comparação de formato: PYO vs PY

Como os formatos PYO e PY se comparam nas propriedades mais importantes para esta conversão.

Comparação dos formatos de arquivo PYO e PY
Propriedade .PYO Python Optimized Bytecode .PY Python source file
Legível em texto simples Não Sim
Formatação de texto Nenhum Básico
Imagens Não Não
Edição posterior Não editável diretamente Fácil
Abre num navegador web Não Não
Tamanho típico do arquivo Muito pequeno Pequeno
Padrão aberto Não Sim
Mais usado para Incorporação em aplicações Edição e pós-produção
Introduzido — 1991
Desenvolvedor Python Software Foundation Python Software Foundation
Tipo MIME — text/x-python

O banco de dados atualmente não contém nenhum conversor de arquivo pyo.

Conversão inversa

Converter para .py
de outros formatos

Compartilhar nas redes sociais: