Quer criar uma biblioteca Python? Este guia mostra como.
As ferramentas que vamos usar neste tutorial são:
- Prompt de comando Linux
- Visual Studio Code
Passo 1: Criando um Diretório para Sua Biblioteca Python
- Abra o prompt de comando e crie uma nova pasta para a sua biblioteca Python.
- Lembre-se de que:
- ‘pwd’ mostra o diretório atual.
- ‘ls’ lista pastas e arquivos.
- ‘cd <caminho>’ muda o diretório.
- ‘mkdir <pasta>’ cria uma nova pasta no diretório de trabalho.
- Por exemplo, minha pasta é ‘mypythonlibrary’. Altere o diretório atual para sua pasta desejada.”
Passo 2: Criar um Ambiente Virtual para Sua Pasta
Ao iniciar seu projeto, crie um ambiente virtual para evitar problemas de compatibilidade com bibliotecas e colaboração com outros. Para isso, após mudar para a pasta desejada, use o comando a seguir
python3 -m venv venv
Depois de criado, ative o ambiente:
source venv/bin/activate
Ativar um ambiente virtual ajusta as configurações do Python e mostra o ambiente atual no prompt. Certifique-se de ter os pacotes wheel, setuptools e twine instalados, pois serão necessários para criar sua biblioteca Python.
pip install wheel
pip install setuptools
pip install twine
Passo 3: Criar uma Estrutura de Pastas
No Visual Studio Code, abra a pasta “mypythonlibrary” que você criou. Agora, adicione pastas e arquivos ao projeto usando o prompt de comando ou o Visual Studio Code. Comece criando os seguintes itens:
- Um arquivo vazio chamado “setup.py”.
- Um arquivo vazio chamado “README.md” para informações sobre a biblioteca.
- Uma pasta chamada “mypythonlib” (ou outro nome exclusivo para sua biblioteca Python).
- Dentro de “mypythonlib”, crie um arquivo vazio chamado “init.py”.
- Também em “mypythonlib”, crie um arquivo chamado “myfunctions.py”.
Finalmente, na pasta raiz, crie uma pasta “tests” e dentro dela, um arquivo “init.py” vazio e um arquivo vazio chamado “test_myfunctions.py”. Sua estrutura deve se parecer com isso:
Passo 4: Criar Conteúdo para Sua Biblioteca
Para adicionar funções à sua biblioteca, você pode colocá-las no arquivo myfunctions.py. Por exemplo, copie a função haversine para o arquivo:
from math import radians, cos, sin, asin, sqrt
def haversine(lon1: float, lat1: float, lon2: float, lat2: float) -> float:
"""
Calculate the great circle distance between two points on the
earth (specified in decimal degrees), returns the distance in
meters.
All arguments must be of equal length.
:param lon1: longitude of first place
:param lat1: latitude of first place
:param lon2: longitude of second place
:param lat2: latitude of second place
:return: distance in meters between the two sets of coordinates
"""
# Convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# Haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
r = 6371 # Raio da Terra em quilômetros
return c * r
Quando você escreve código, é importante criar testes. No Python, use as bibliotecas pytest e pytest-runner, instalando-as no seu ambiente virtual.
pip install pytest==4.4.1
pip install pytest-runner==4.4
Vamos criar um pequeno teste para a função haversine. Copie o seguinte e coloque-o no arquivo test_myfunctions.py:
from mypythonlib import myfunctions
def test_haversine():
assert myfunctions.haversine(52.370216, 4.895168, 52.520
008, 13.404954) == 945793.4375088713
Finalmente, faça um arquivo setup.py para construir a biblioteca. Um exemplo simples se parece com isto:
from setuptools import find_packages, setup
setup(
name='mypythonlib',
packages=find_packages(),
version='0.1.0',
description='Minha primeira biblioteca Python',
author='Eu',
license='MIT',
)
A variável ‘name’ no ‘setup’ define o nome do pacote da biblioteca, que usaremos igual ao nome da pasta.
Escolha os pacotes a criar; evitar pacotes indesejados é importante.
Use ‘find_packages()’ com cuidado, considerando a exclusão dos testes ou use ‘include’ para um controle mais preciso.
from setuptools import find_packages, setup
setup(
name='mypythonlib',
packages=find_packages(include=['mypythonlib']),
version='0.1.0',
description='Minha primeira biblioteca Python',
author='Eu',
license='MIT',
)
Defina as necessidades da sua biblioteca. Use ‘install_requires’ no ‘setup.py’ apenas para pacotes essenciais.
Não liste pacotes da biblioteca padrão do Python. Se você só usou a biblioteca ‘math’ até agora, pode deixar ‘install_requires’ vazio. Lembre-se de que o pytest foi instalado para testes, ele não é necessário em ‘install_requires’
from setuptools import find_packages, setup
setup(
name='mypythonlib',
packages=find_packages(include=['mypythonlib']),
version='0.1.0',
description='Minha primeira biblioteca Python',
author='Eu',
license='MIT',
install_requires=[],
setup_requires=['pytest-runner'],
tests_require=['pytest==4.4.1'],
test_suite='tests',
)
Executar:
python setup.py pytest
executará todos os testes armazenados na pasta ‘tests’.
Passo 5: Construir Sua Biblioteca
Agora que tudo está pronto, construa sua biblioteca. No prompt de comando, vá para a pasta principal do projeto (/caminho/para/mypythonlibrary) e execute:
python setup.py bdist_wheel
Você encontrará o arquivo “wheel” na nova pasta “dist”. Para instalar sua biblioteca, use:
pip install /caminho/para/seuarquivo.wheel
Você pode publicar sua biblioteca na intranet do trabalho ou no PyPI e, depois de instalá-la, importá-la com:
import mypythonlib
from mypythonlib import myfunctions
Agora você pode criar e compartilhar sua própria biblioteca Python, abrindo oportunidades como desenvolvedor e contribuindo para a comunidade de código aberto.
Referências Adicionais
Introdução ao Pip: Instalando Bibliotecas Python de Terceiros
Link para a biblioteca setuptools: https://pypi.org/project/setuptools/