Manual

do

Maker

.

com

Gerar binário a partir do script Python com Cython

Gerar binário a partir do script Python com Cython

No artigo anterior vimos como criar uma biblioteca para importar em nosso script Python, utilizando Cython. É uma ótima opção para proteger código que não deva ser modificado, ainda que o código seja distribuido. Nesse artigo veremos outra utilização de Cython, usando-o agora para gerar binário a partir do script Python; não uma biblioteca, mas o programa principal.

Gerar binário a partir do script Python

Para isso, vamos utilizar o mesmo código do artigo anterior. Se não o leu, sugiro que o faça previamente, porque nele discorri sobre a razão de ter sido escrito assim. Agora vamos ver o efeito de sua execução como binário direto.

Fazer essa compilação é mais simples ainda do que gerar a biblioteca, então vamos direto ao processo. Primeiro, eis o código a ser utilizado:

#!/usr/bin/env python
from __future__ import print_function
import os

def homes():
    '''Imprime os homes dos usuarios do sistema'''
    print('usuarios no home: ', end=' ')
    print(os.listdir('/home'))
def nome(myName):
    '''Imprime um nome passado como parametro'''
    print("Seu nome: {}".format(myName))

if __name__ == '__main__':
    nome('djames')

O nome dado ao arquivo continua o mesmo do artigo anterior; dobitaobyte.pyx. Inicialmente o código foi escrito e testado como um script Python comum, por isso recomendo mais uma vez, leia o artigo anterior.

Gerar o arquivo .c

Para gerar o arquivo com extensão e código C, simplesmente executa-se algo como:

cython --embed dobitaobyte.pyx

Com isso, um arquivo com o código C é criado com o mesmo nome do arquivo original, com extensão .c.

Compilar o arquivo .c

Agora para compilar nosso programa, devemos utilizar o gcc com os seguintes parâmetros (supondo ainda que esteja utilizando o mesmo nome de arquivo que eu utilizei, dobitaobyte.c):

gcc -I /usr/include/python2.7 -o dobitaobyte dobitaobyte.c -lpython2.7 -lpthread -lm -lutil -ldl

Isso criará o binário com o nome passado na flag -o, cuja escolha foi dobitaobyte. O diretório então chamado bin conterá os arquivos da imagem a seguir, cuja imagem contém também a execução do programa. Repare que o programa agora é completamente inútil, uma vez que não é possível chamar suas funções, que foram criadas para o artigo anterior. Mas não importa, porque com o mesmo código conseguimos ver duas coisas importantes; o programa foi gerado e ao executá-lo, pudemos ver a execução da função nome que no artigo anterior não era executado por estarmos usando esse código como uma biblioteca. Legal?

py2c.webp

Agora já temos uma referência para criar bibliotecas e uma referência para criar o programa em si. Espero que tenha gostado desses dois breves artigos e que possam lhe servir de inspiração!

Onde comprar Raspberry?

Como sempre, sugiro a compra do Raspberry com nosso parceiro CurtoCircuito, que tem além de Raspberry, diversos outros componentes importantes e úteis para makers, como uma gama incrível de sensores.

Em breve teremos mais artigos relacionados a Raspberry, prepare seu coração (e seu bolso, porque certamente quererá ter mais uma novidade).

Até a próxima!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.