Você está na página 1de 8

💻

Criando e publicando pacotes


no Python
Muitas das vezes queremos facilitar o trabalho na hora de programar. Para
isso, são usados as bibliotecas ou pacotes. Contudo, vai existir momentos em
o programador queira criar um pacote que ainda não existe.

Então, como podemos criar uma biblioteca e publica-la?


É o que veremos a seguir.

—Sumario—
Sumario—
I. Primeiro, configura-se o projeto.
II. Definindo uma licença para o seu código.
III. Especificando o funcionamento de seu código.
IV. Definindo opções padrões pelo Setup.cfg.
V. Configurando o setup.py
Explicação de cada topico:
VI.Empacotando
VII. Fazendo upload do código.
Referências—

I. Primeiro, configura-se o projeto.

Criando e publicando pacotes no Python 1


Primeiro, devemos configurar o nosso projeto para a posterior publicação.

O seu projeto deve ficar organizado dessa maneira:

terá uma pasta que vai conter uma subpast( Nome_do_pacote) que vai
conter os modulos python criado por você e o arquivo _ _init.py_ _;

Um LICENSE.txt ;

Um Readme.md;

Um Setup.cfg e um Setup.py

Antes de avançar, vamos explicar a função do pacote init.

O pacote _ _ init.py _ _ é o primeiro a ser aberto quando o pacote que foi


criado for importado. Por isso, é comum colocar nele algum comando para
importar por completo o pacote criado.

Com isso, em vez de sempre importar o pacote assim:

import pacote.subitempacote

Ou assim:

from pacote import subitempacote

Você pode colocar no init assim:

Criando e publicando pacotes no Python 2


from pacote import *

Ai, quando você importar o pacote no seu projeto, o init terá a função de
importar tudo automaticamente sem que você precise importar os sub itens o
tempo todo.

II. Definindo uma licença para o seu código.


É importante para o seu código ter uma licença . Para isso, existe o
LICENSE.txt

Você pode encontrar licenças para colocar no seu arquivo por meio deste site:

Choose an open source license


Non-judgmental guidance on choosing a license for your open source project
https://choosealicense.com/

Achando uma licença, você a coloca no seu arquivo LICENSE.txt.

III. Especificando o funcionamento de seu código.


Após ter configurado o _ _ Init.py _ _ e o LICENSE.txt, você vai precisar
especificar ao usuário o funcionamento de seu código. Para tal, existe o
Readme.md que ira conter toda informação necessária.
Ela possui comandos que permitem uma organização melhor. Veja os
comandos neste link:

adam-p/markdown-here
This is intended as a quick reference and showcase. For
more complete info, see John Gruber's original spec and the
Github-flavored Markdown info page. Note that there is also
https://github.com/adam-p/markdown-here/wiki/Markdo
wn-Cheatsheet

IV. Definindo opções padrões pelo Setup.cfg.

Criando e publicando pacotes no Python 3


O Setup.cfg do projeto vai ter função de configura-lo para o PyPI. Nele você
poderá especificar diversas coisas. É comum especificar ao setup onde está
os arquivos readme.md e LICENSE.txt dessa maneira:

[metadata]
description-file = README.md
license_file = LICENSE.txt

Como os dois arquivos já estão no mesmo diretório que o setup.cfg, não é


preciso especificar detalhadamente o caminho. Apenas o seus nomes servirão.

V. Configurando o setup.py
Chegou a hora de configurar o ultimo arquivo, o Setup.py . Ele vai ser
responsável pelo empacotamento do seu código.
O próprio python possui uma função que realiza esse empacotamento: o
Setup().

Para importa-lo, usa-se as bibliotecas setuptools e distutils.core. Mas é


recomendável o uso do setuptools.
Então, começaremos as configurações do setup.py importando a biblioteca
setuptools com o Setup().

from setuptools import setup

Após isso, o seu setup.py deve ter o seguinte escopo:

from setuptools import setup

setup(
name = '',
version = '',
author = '',
author_email = '',
packages = [''],
description = '',
long_description = '',
url = '',
project_urls = {
'',
''
},
license = '',
keywords = '',

Criando e publicando pacotes no Python 4


classifiers = [
]
)

Explicação de cada topico:


name: nele estará o nome do seu pacote. Exemplo:

name = 'calculadora',

version: vai conter o numero de versão do seu pacote. Exemplo:

version: '1.0.0',

author: Aqui vai estar o nome do autor do codigo, no caso o seu nome.
Exemplo:

author = 'João Miguel',

author_email: Vai conter o email do autor. Exemplo:

author_email = 'JoaoM@gmail.com',

packages: Vai conter todos os codigos que serão utilizados no pacote.


Exemplo:

packages = ['pacote1','pacote2','...']

💡 O package é uma lista!

description: Contem uma descrição rápida do seu pacote.

long_description: Contem uma descrição longa de seu projeto.

url: Serve para mostrar uma URL de uma pagina principal para o seu
pacote. É comum utilizar o link para o repositorio GitHub do projeto.

Criando e publicando pacotes no Python 5


url: 'https://github.com/nome_usuario/codigo'

project_urls: Contem outros links relacionados ao seu pacote. Pode ser um


link de download ou de outras especiações.

license: Contem o nome da licença usado em seu codigo. Por exemplo, a


licença MIT.

license = 'MIT'

keywords: Contem as palavras chaves para encontrar o seu pacote no


PyPI.

classifiers: Contem os classificadores que seu codigo terá. O site PyPI


oferece uma lista de classificadores que podem ser utilizados:

https://pypi.org/pypi?%3Aaction=list_classifiers

💡 classifiers é uma lista também, então coloque cada classificador


separado por virgula.

Após configurar todos os topicos, chegou a hora de ativar o Setup.py para o


empacotamento.

VI.Empacotando
Para o PyPI acessar os dados do nosso pacote e publica-lo para uma
posterior instalação( pip install) devemos criar uma distribuição raiz. Para isso,
teremos que abrir o cmd no direitorio do pacote( onde esta localizado o
Setup.py) e executar o seguinte comando:

python setup.py sdist

Após rodar esse comando, a pasta ficará assim:

Criando e publicando pacotes no Python 6


Veja que surgiu um diretório contendo o nome do pacote com a extensão
".egg-info"; e outro diretório chamado "dist".

VII. Fazendo upload do código.


Para fazer o upload, é usado a biblioteca "Twine". Instale-a usando o comando
pip do python. Após a instalação, você deve criar uma conta no PyPI e uma
conta no repositorio de teste do PyPI, o TestPyPI.

Depois disso, usamos o comando twine upload dist/* no diretório do seu


pacote. Mas para testar o nosso codigo, ver se ele aparecera corretamente no
PyPI, usamos o twine upload dist/* junto da opção - - -repository-url
https://test.pypi.org/legacy/.

Ficará assim:

twine upload dist/* --repository-url https://test.pypi.org/legacy/

Após o envio ao site de teste e ter verificado se funcionou corretamente,


podemos,agora, enviar o codigo para o site oficial. Para isso, basta executar o
seguinte codigo:

twine upload dist/*

Criando e publicando pacotes no Python 7


💡 Caso não consiga usar o twine, a ação de upload pode ser utilizada
pelo setup.py assim: python setup.py sdist upload -r pypi

Pronto! Agora, o seu código está publicado no PyPI em prol da comunidade.

—Referências—
https://www.alura.com.br/artigos/como-publicar-seu-codigo-python-no-pypi

http://pythonclub.com.br/como-distribuir-sua-aplicacao-python-com-pypi.html

Criando e publicando pacotes no Python 8

Você também pode gostar