Jump to content

Compilar .py para .pyc | PyTeam


Tharis
 Share

Recommended Posts

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.

Link to comment
Share on other 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...  ? .. Muita coincedência  :nono1:

Domingão eu posto !!

Kratos

"Vejo sempre além, pois me apóio em ombro de Gigantes"

Link to comment
Share on other 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.

Link to comment
Share on other 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.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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. 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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
Link to comment
Share on other 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? 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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)?

Link to comment
Share on other 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 é.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.