Por que converter PYC para PY?
O motivo principal é a recuperação do código-fonte quando o .py original foi excluído ou nunca fornecido junto com o bytecode. Um uso secundário é a auditoria de programas distribuídos apenas como bytecode. Isso é uma descompilação em vez de uma conversão de formato limpa - um .pyc armazena bytecode compilado e o texto original do código-fonte não é preservado dentro dele.
Como converter PYC para PY
decompyle3 FREE
Instale com pip install decompyle3 e execute decompyle3 seu_arquivo.pyc > recuperado.py. Suporta Python 3.7-3.8.
uncompyle6 FREE
Instale com pip install uncompyle6 e execute uncompyle6 seu_arquivo.pyc > recuperado.py. Lida com Python 2.x até 3.8.
pycdc OPEN-SOURCE
Baixe o binário de github.com/zrax/pycdc e execute pycdc seu_arquivo.pyc > recuperado.py. Melhor opção para Python 3.9 e mais recentes, embora a precisão no 3.11+ seja limitada.
Sobre estes formatos
Um arquivo .pyc é um bytecode Python compilado que o CPython armazena em cache automaticamente para acelerar a inicialização. Normalmente, você não precisa abri-lo ou tocá-lo. Para executar…
Abrir detalhes de .PYC →Um arquivo .py é um arquivo de código-fonte Python - texto simples contendo um programa ou script escrito na linguagem Python. Para ler o código, abra-o em qualquer editor de texto. Para…
Abrir detalhes de .PY →Qualidade e o que observar
- Os comentários sumiram permanentemente - o bytecode do Python não os armazena; nenhuma ferramenta pode recuperá-los de um
.pyc, independentemente da versão do Python. - A precisão da descompilação cai drasticamente para o Python 3.9 e superior; o pycdc é a melhor opção de esforço para bytecode mais novo, mas pode produzir uma saída incompleta.
- Se o
.pycfoi ofuscado, a descompilação falhará ou retornará uma saída em branco;python3 -m dis seu_arquivo.pycainda pode mostrar instruções individuais de bytecode como alternativa.
Perguntas frequentes
Como sei qual versão do Python compilou o .pyc?
.pyc em __pycache__ são nomeados como module.cpython-311.pyc - o número indica a versão do Python que o compilou.As docstrings sobrevivem à descompilação?
E se o descompilador produzir erros ou saída em branco?
.pyc pode estar ofuscado ou ser de uma versão do Python não suportada; tente uma ferramenta diferente ou use python3 -m dis para inspecionar instruções individuais de bytecode.