• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tharis

[Python] Compilar .py para .pyc | PyTeam

19 mensagens neste tópico

Compilar .py para .pyc

  • Quais as vantagens de .py para .pyc?
  • Como compilar .py para .pyc?

Vantagens

- Distribuir um programa, mas não deixar ver o seu código;

- É mais rápido a executar o programa, pois não tem de compilar primeiro. (Triton)

Como compilar?

Um Único Ficheiro

import py_compile
py_compile.compile("codigo.py")

Nota: codigo.py é para substituir pela directoria + o nome do ficheiro para compilar.

Todos os Ficheiros de Uma Directoria

import compileall
compileall.compile_dir("directoria", force=1)

Nota: directoria é para substituir pela directoria dos ficheiros para compilar.

Powered by PyTeam


Artigo na wiki aqui http://wiki.portugal-a-programar.org/python:compilar_para_bytecode.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:)

Ou

>> python -OO -c "import meuprograma"

Onde "meuprograma" é seu Script Python, mas não precisa colocar a extenção..

Kra, seu eu disser que estou codando um programa exatamente sobre isso...  :shocking: .. Muita coincedência  :nono1:

Domingão eu posto !!

Kratos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Baril! :)

Era isso mesmo que eu andava á procura aqui á tempos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em, desculpem estar a desenterrar este tópico, mas isto compila para bytecode. Ouvi dizer que dá para obter o código fonte novamente, o que eu acho muito estranho, se alguem tiver maisinformação sobre isso afixe aí que pessoalmente vejo aí pela internet mais contra-informação sobre este assundo do que propriamente informação confiável.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código tal qual como o escreveste não consegues obter na totalidade, mas podes reconstruí-lo em Assembly, como em qualquer outra linguagem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso basta abrir um binário com um editor de hexadecimal, a passagem para assembly é trivial.

Eu li por aí que se pode 'descompilar' o pyc para código fonte normal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso basta abrir um binário com um editor de hexadecimal, a passagem para assembly é trivial.

Eu li por aí que se pode 'descompilar' o pyc para código fonte normal

Não me parece... Mas nunca se sabe. :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Teoricamente é possível descompilar para código fonte compatível.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

>> python -OO -c "import meuprograma"

Aqui está o meu problema, como configuro o sistema para comseguir correr o script com optimização?
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como isto está no wiki, vou aqui reabrir a discussão.

Qual é o problema de escrever simplesmente

import modulo.py

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para importares um modulo tens de escrever só o nome deste, sem extenção, se colocares a extenção o python vai porcurar pelo submoludo py.

>>> import os
>>> import os.py

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import os.py
ImportError: No module named py
>>> import os.pyc

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    import os.pyc
ImportError: No module named pyc

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu sei, foi uma pequena gralha, nem me lembrei disso. Mas mantem-se a pergunta que gostava de discutir:

não serão estes guias um pouco inconsequentes tendo em conta que basta importar um módulo para que este seja compilado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pedrotuga, claro que podes fazer um import, mas agora imagina que tens uma pasta com 40 libs .py e não queres distribuir o código?

Fazes 40 imports? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não serão estes guias um pouco inconsequentes tendo em conta que basta importar um módulo para que este seja compilado?

Tens um programa que vais distribuir em binário (usando um wrapper qualquer para o interpretador de Python), e queres ter tudo em bytecode para tornar as execuções mais rápidas. Vais importar modulo a módulo, ou vais incluir no teu script de packaging código para compilar todos os ficheiros em causa? :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mmmm... pois era o que eu desconfiava.

Então assim sendo é gajo para merecer uma referencia no inicio como o método mais simples.

Sintam-se à vontade para editar a página a vosso gosto, ou então posso editar isso eu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o desenterro do tópico, mas não fiquei esclarecido sobre um assunto...

É possível reaver o código de um ficheiro .pyc?

Tentei usar este software:

http://code.google.com/p/unpyc/

(mas sem sucesso)

Se conhecerem outra forma melhor e gratuita...

edit:

Encontrei uma forma gratuita.

Agora deparei-me com outro problema. É possível reaver o código de um script compilado com py2exe (Python 2.5)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o desenterro do tópico, mas não fiquei esclarecido sobre um assunto...

edit:

Encontrei uma forma gratuita.

Agora deparei-me com outro problema. É possível reaver o código de um script compilado com py2exe (Python 2.5)?

Qual?

Sim é.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora