Curso
Os arquivos Python têm dois métodos principais de execução: usando o terminal ou em um editor de texto/IDE que você escolher. Observe que um arquivo Python é simplesmente um programa ou script escrito com o código-fonte Python e salvo com a extensão de arquivo .py
. Há vários cenários em que você pode querer ocultar seu código-fonte ao compartilhar scripts Python com outras pessoas. Uma maneira de conseguir isso é convertendo o arquivo Python em um arquivo executável.
Neste artigo, abordaremos alguns dos cenários que justificam a conversão do seu arquivo Python em um executável. Também demonstraremos como converter um arquivo Python em um arquivo executável usando duas bibliotecas Python: Pyinstaller e auto-py-to-exe.
Clone este repositório do Github para que você possa acompanhar este tutorial.
Por que converter Python em um exe?
Arquivos executáveis - arquivos salvos com a extensão .exe
- são usados para instalar ou executar aplicativos de software em computadores com o sistema operacional Windows. O arquivo que permite que um computador Windows execute um aplicativo é o arquivo .exe
.
Há vários motivos pelos quais você pode querer converter um programa Python em um arquivo executável. Vamos dar uma olhada em alguns deles:
Atividade maliciosa
Infelizmente, algumas pessoas na Internet gostam de espalhar softwares mal-intencionados para infectar os dispositivos de outras pessoas e roubar suas informações. Uma maneira de combater essas pessoas é evitar cair em seus golpes, o que significa não baixar ou abrir cegamente arquivos .exe
que não sejam de uma fonte confiável.
Acessibilidade
Outro motivo pelo qual você pode querer converter um arquivo Python em um executável é para compartilhar um aplicativo com outros usuários. O programa Python típico pode consistir em várias dependências que outro usuário precisaria instalar para que o programa pudesse ser executado. E se a pessoa não souber programar? Nesses cenários, esperar que um usuário aprenda a codificar antes de usar um aplicativo pode não ser razoável. A conversão de um arquivo Python em um arquivo executável permite que os usuários acessem o seu programa sem conhecer Python.
Proteção do código-fonte
Mas, mesmo que eles saibam quem codifica, converter um arquivo Python em um arquivo executável pode ser uma boa opção para evitar que seu código seja roubado. Um arquivo executável impede que o código seja roubado porque cria uma versão compilada do seu código-fonte, o que o torna mais difícil de compreender do que o código-fonte real.
Programação de trabalhos
Você também pode agendar um trabalho no seu computador para executar um arquivo .exe
em um horário específico.
Tutorial de conversão de Python para exe
Agora que você sabe o que são arquivos .exe
e por que deseja converter um arquivo Python em um arquivo .exe
, vamos ver como fazer isso no Python. Nesta seção, abordaremos duas estruturas: pyinstaller e auto-py-to-exe.
Essa demonstração usará o conjunto de dados abertos do Airbnb da cidade de Nova York.
Antes que os cientistas de dados possam analisar um conjunto de dados, eles devem ser formatados para serem compatíveis com as ferramentas que estão usando. Assim, ao criar um esquema de validação, você define efetivamente todas as validações que se aplicam a cada campo de forma declarativa. Esse processo pode ser bastante repetitivo. Para evitar que nossos cientistas de dados se envolvam em tarefas repetitivas, criamos um script de validação automatizado para ser executado periodicamente.
Observação: Seja extremamente cuidadoso ao usar caminhos relativos se o script precisar ler dados. É melhor você usar caminhos absolutos para garantir que o executável funcione conforme o esperado.
import pandas as pd
from pandas.api.types import CategoricalDtype
def perform_validation(filename:str):
"""
A function to validate inputs for NYC Airbnb Open data.
"""
path_to_data = "../.."
data = pd.read_csv(f"{path_to_data}{filename}")
# Convert neighbourhood_group to type category
neighbourhood_group_to_cat = CategoricalDtype(
categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"],
ordered=False
)
data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat)
# Convert room_type to type category
room_type_to_cat = CategoricalDtype(
categories=["Entire home/apt", "Private room", "Shared room"],
ordered=False
)
data["room_type"] = data["room_type"].astype(room_type_to_cat)
# Convert last_review to datetime
data["last_review"] = pd.to_datetime(data["last_review"])
# Minimum nights a person can stay is one night
assert data["minimum_nights"].min() >= 1
# Minimum number of reviews is 0
assert data["number_of_reviews"].min() >= 0
# Minimum number of reviews per month
assert data["reviews_per_month"].min() >= 0.00
# Minimum amount of listings per host
assert data["calculated_host_listings_count"].min() >= 1
# Number of days when listing is available for books
# Could be 0 if tennant has long term booking
assert data["availability_365"].min() >= 0
# Save validated data
data.to_csv("validated_ab_nyc_2019.csv", index=False)
if __name__ == "__main__":
# User inputs filename
filename = input("Enter filename: ")
# Ensure it's a string
if not filename.isalpha():
filename = str(filename)
# Automated validation
perform_validation(filename)
Observação: copiamos e colamos esse script nos diretórios do pyinstaller e do auto-py-to-exe.
# Directory structure
| AB_NYC_2019.csv
|
+---auto_py_to_exe
| | requirements.txt
| | validation.py
+---pyinstaller
| requirements.txt
| validation.py
Cada diretório tem seu próprio ambiente virtual no qual instalamos os requisitos: consulte requisitos do pyinstaller ou requisitos do auto-py-to-exe. Se você estiver acompanhando o código, certifique-se de criar um ambiente virtual no diretório pyinstaller e no diretório auto-py-to-exe.
Em um nível mais alto, o script acima contém uma função - saiba mais sobre como escrever funções em Python - que lê um conjunto de dados e, em seguida, define o formato esperado de campos específicos nos dados. A próxima etapa é converter esse script Python em um arquivo executável que possa ser executado periodicamente para gerar um conjunto de dados formatado.
Tutorial do Pyinstaller
O Pyinstaller permite que você converta rapidamente um arquivo Python em um arquivo executável a partir do terminal. Depois de criar o ambiente virtual e instalar os requisitos para o script (incluindo o pyinstaller), basta abrir o terminal e navegar até o diretório em que o arquivo Python que você deseja converter está localizado.
A próxima etapa é executar o seguinte comando:
pyinstaller --onefile validation.py
Inicialmente, você verá vários logs, dos quais o último dirá algo como "completed successfully" (concluído com êxito), já que o arquivo executável foi criado com êxito.
Figura 1: Registros que mostram que o arquivo executável está sendo criado e que foi concluído com êxito.
A conclusão dessa execução criará dois novos diretórios, build e dist, no mesmo diretório em que o arquivo Python está localizado. No diretório dist, você encontrará o script validation.exe
.
Figura 2: Um GIF que demonstra a execução do validation.exe em um conjunto de dados.
Para executar o script, basta clicar nele. Isso abrirá um console que solicita a inserção do nome do arquivo dos dados nos quais você deseja executar a validação. Depois que você digitar o nome do arquivo, o console será fechado e os dados validados serão criados no mesmo diretório que o arquivo validation.exe
- veja a Figura 2.
Tutorial do Auto py to exe
A primeira etapa para criar um arquivo executável usando o auto-py-to-exe é executá-lo usando o seguinte comando:
auto-py-to-exe
Isso deve retornar uma interface gráfica do usuário (GUI) que nos ajudará a converter nosso arquivo Python em um arquivo executável.
Figura 3: A interface gráfica do usuário retornou após a execução do comando auto-py-to-exe.
Observação: se não estiver funcionando, verifique se você criou um ambiente virtual no diretório auto-py-to-exe e instalou o arquivo requirements.txt no ambiente virtual usando o seguinte comando: pip install -r requirements.txt
.
A GUI tem vários campos que devem ser preenchidos. Vamos dar uma olhada em cada uma delas e fazer uma pausa:
- Localização específica: Nesse campo, você deve adicionar o local do script do arquivo Python que deseja converter em um executável.
- Um arquivo: É aqui que você seleciona se deseja criar um único diretório ou arquivo. Um único diretório conterá todas as dependências necessárias para executar o script e um arquivo executável, ao passo que a seleção de "One File" criará um único arquivo executável.
- Janela do console: A decisão entre uma janela de console "baseada em console" ou "baseada em janela" depende do que é retornado pelo seu script. Por exemplo, o script que criamos acima exige que o usuário insira um nome de arquivo. Portanto, a solução "Console Based" é recomendada, pois ela abrirá o console após a execução do arquivo executável. Se não houver necessidade de exibir as saídas do console após a execução do arquivo executável, a opção "Window Based" será uma boa opção.
Também são fornecidas outras opções para configurar a criação do nosso arquivo executável (ou seja, adicionar ícones, arquivos adicionais e outros). Nesta seção, também podemos modificar o caminho para onde queremos exportar os arquivos gerados pelo nosso arquivo executável: para fazer isso, selecione a opção de alternância "Settings" (Configurações) e navegue até o diretório de saída que você escolher. A última etapa é selecionar "Convert .py to .exe" (Converter .py em .exe) para converter nosso arquivo Python.
Veja o GIF na Figura 4 para saber como configuramos nosso arquivo executável.
Figura 4: Um GIF demonstrando a configuração de auto-py-to-exe
Quando você voltar ao diretório do auto-py-to-exe, haverá um diretório chamado output: é nesse diretório que está o nosso arquivo validation.exe
. Selecione o arquivo para executá-lo, o que abrirá um console que solicitará que você digite um nome de arquivo:
Figura 5: Console retornado da execução do arquivo de validação executável.
Basta digitar o nome do arquivo - neste exemplo, AB_NYC_2019.csv - e pressionar enter. Isso fechará o console e criará um novo arquivo no diretório de saída (onde está o arquivo executável) chamado validated_ab_nyc_2019.csv.
Concluir
Neste artigo, você aprendeu:
- O que é um arquivo Python
- O que é um arquivo executável e por que ele pode ser útil
- Como converter um script Python em um executável usando o pyinstaller, que é uma ótima ferramenta para aqueles que se sentem mais confortáveis com as operações de linha de comando.
- Como converter um script Python em um executável usando o auto-py-to-exe, que fornece aos usuários uma interface gráfica do usuário (GUI) para configurar como o arquivo executável deve ser criado.
Saiba mais sobre como você pode aproveitar o Python para fazer ciência de dados no curso de carreira DataCamps Data Scientists with Python.