Você está na página 1de 7

26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

Fórum iMasters (https://forum.imasters.com.br/)


we are developers Portal E-Commerce Brasil (http://www.ecommercebrasil.com.br)
CBR (https://cryptobusinessreview.com/)

(/) POWERED
(HTTP://DEVELOPERS.TOTVS.COM/)
BY: (https://www.facebook.com/PortaliMasters) (https://twitter.com/i

Back-End(https://imasters.com.br/back-end)
Mobile(https://imasters.com.br/mobile)
Front End(https://imasters.com.br/front-end)
DevSecOps(https://imasters.com.br/devsecops)
Design & UX(https://imasters.com.br/design-ux)
Data(https://imasters.com.br/data)
APIs e Microsserviços(https://imasters.com.br/apis-microsservicos)
Crypto(https://cryptobusinessreview.com/)

PATROCINADOR:
BACK-END

9 DEZ, 2016

Como distribuir sua aplicação Python com PyPI


(https://www.facebook.com/sharer? (https://twitter.com/share? (https://www.linkedin.com/shareArticle?
u=https://imasters.com.br/back-end/como-distribuir- url=https://imasters.com.br/back-end/como- url=https://imasters.com.br/back-end/como-distribuir- COMPARTILHE!
sua-aplicacao-python-com-pypi) distribuir-sua-aplicacao-python-com-pypi) sua-aplicacao-python-com-pypi)

MICHELL STUTTGART
(HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)
Tem 12 artigos publicados com 14400
visualizações desde 2016

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)

12

Bacharel em Engenharia da Computação pela Universidade Federal de Itajubá. É apaixonado por desenvolvimento de software, tecnologia e ciências,
além de ser entusiasta da filosofia de Software Livre. Desenvolvedor Python e Linux User, também contribui em diversos projetos Open Source
(incluindo projetos próprios) e colaborada nos blogs Código Avulso e PythonClub. Sempre está em busca de novos conhecimentos e de compartilhar
o que aprende.

LEIA MAIS (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)

1 MAI, 2018
Criando dicts a partir de outros dicts (https://imasters.com.br/back-end/criando-dicts-partir-de-outros-dicts)

2 FEV, 2018
Mate e Cinnamon: como reiniciar a configuração dos painéis de menu (https://imasters.com.br/desenvolvimento/mate-e-cinnamon-como-reiniciar-
configuracao-dos-paineis-de-menu)

8 NOV, 2017
Python – Calculando diferença de dias entre duas datas (https://imasters.com.br/back-end/python-calculando-diferenca-de-dias-entre-duas-datas)

Imagine a seguinte situação: você passou alguns dias (ou mesmo meses) desenvolvendo uma módulo python, escreveu testes,
implementou funcionalidades e depois de alguns ajustes, chegou a hora de liberar seu software para que outros desenvolvedores
possam utilizá-lo. Qual o melhor modo de distribuí-lo?

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 1/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

Caro leitor, se você costuma programar em Python (seja profissionalmente ou não) provavelmente já instalou outros módulos
usando o PyPI (https://pypi.python.org/pypi), através do comando abaixo:

1 pip install nomedomodulo

Não seria interessante usar o mesmo método para distribuir a sua aplicação? Sim? Então, mãos à obra.

Sobre o PyPI – Python Package Index


O site PyPI (https://pypi.python.org/pypi), é um repositório de softwares desenvolvidos na linguagem Python. Em outras palavras, ele
garante que seu pacote Python sempre esteja disponível para a instalação. O seu funcionamente é simples, porém algumas
configurações inicias devem ser feitas para que tudo funcione corretamente.

Crie uma conta

Primeiramente, para distribuir seus pacotes usando o PyPI (https://pypi.python.org/pypi), precisamos criar uma conta em ambos os
sites:

 PyPI Live (https://pypi.python.org/pypi?%3Aaction=register_form)

 PyPI Test (https://testpypi.python.org/pypi?%3Aaction=register_form)

Recomendo que você utilize o mesmo email e senha para ambos os sites. Posteriormente, isso tornará mais fácil o processo de
configuração.

Configurando o ambiente

O próximo passo é criar um arquivo .pypirc em sua home. Esse arquivo contem informações de autenticação, tanto para o PyPI Live
(https://pypi.python.org/pypi) quando para o PyPI Test (https://testpypi.python.org/pypi).

1 touch ~/.pypirc

Apesar de não ser obrigatório a criação desse aquivo, ele facilita muito nosso trabalho, uma vez que você não precisaremos inserir
nosso email e senha toda vez que formos enviar nosso código para o PyPI Live (https://pypi.python.org/pypi).

Abra o arquivo .pypirc em seu editor de texto favorito, e insira as informações abaixo.

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 2/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

1 [distutils]

2 index-servers =

3 pypi

4 pypitest

5
6 [pypi]

7 repository=https://pypi.python.org/pypi

8 username=seu_nomedeusuario

9 password=sua_senha

10
[pypitest]
11
repository=https://testpypi.python.org/pypi
12
username=seu_nomedeusuario
13
password=sua_senha
14

Em username insira seu nome de usuário e password, insira sua senha. Faça isso tanto para o pypi quanto para o pypitest.

Um observação importante é que, caso a sua senha possua espaço, não a coloque entre aspas. Por exemplo, se a sua senha for
“batuque da viola doida”, coloque exatamente o mesmo texto em password.

1 password=batuque da viola doida

Preparando o seu módulo Python


Todo pacote distribuído pelo PyPI (https://pypi.python.org/pypi) precisa ter uma arquivo setup.py em seu diretório raiz. E se seu
projeto também usa um arquivo readme em markdown(normalmente chamado README.md) você também precisará criar um arquivo
chamado setup.cfgno diretório raiz do módulo.

Como exemplo, iremos utilizar o módulo codigo_avulso_test_tutorial (https://github.com/mstuttgart/codigo-avulso-test-tutorial) que


criei para ser utilizado como exemplo em nossos tutoriais. Assim, temos a seguinte estrutura básica de diretórios:

1 .

2 ├── codigo_avulso_test_tutorial

3 │ ├── circulo.py

4 │ ├── figura_geometrica.py

5 │ ├── __init__.py

6 │ └── quadrado.py

7 ├── LICENSE

8 ├── README.md

9 ├── setup.cfg
├── setup.py
10
└── test
11
├── circulo_test.py
12
├── figura_geometrica_test.py
13
├── __init__.py
14
└── quadrado_test.py
15

Aqui, o que nos interessa são os arquivos setup.py e setup.cfg. Dentro do arquivo setup.py temos várias informações sobre nossa
aplicação que serão usadas pelo PyPI (https://pypi.python.org/pypi).

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 3/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

1 # -*- coding: utf-8 -*-

2 from setuptools import setup

3
4 setup(

5 name='codigo-avulso-test-tutorial',

6 version='0.1.1',

7 url='https://github.com/mstuttgart/codigo-avulso-test-tutorial',

8 license='MIT License',

9 author='Michell Stuttgart',
author_email='michellstut@gmail.com',
10
keywords='tutorial test unittest codigoavulso',
11
description=u'Tutorial de teste unitário em Python para o blog Código Avulso',
12
packages=['codigo_avulso_test_tutorial'],
13
install_requires=[],
14
)
15

O nome de cada tag é autoexplicativo, então não vou entrar em detalhes. Basta você usar o código acima e substituir com os dados
do seu pacote.

O próximo passo é adicionar o seguinte conteúdo no arquivo setup.cfg (caso você o tenha criado).

1 [metadata]

2 description-file = README.md

Esse arquivo irá dizer ao PyPI (https://pypi.python.org/pypi) onde seu arquivo readme está.

Publicando sua aplicação Python

Agora iremos estudar os passos para enviar nossa aplicação para PyPI (https://pypi.python.org/pypi), para que ela fique disponível
para ser instalada através do pip.

Enviando para PyPI Test

Primeiramente, vamos registrar nossa aplicação no PyPI Test (https://testpypi.python.org/pypi). Esse passo serve para verificarmos se
está tudo certo com nosso pacote e também validar se já não existe outro módulo com o mesmo nome. Registramos nossa
aplicação com o seguinte comando:

1 python setup.py register -r pypitest

Se tudo ocorrer bem teremos a seguinte saída (Server responde 200):

1 running register

2 running egg_info

3 creating codigo_avulso_test_tutorial.egg-info

4 writing codigo_avulso_test_tutorial.egg-info/PKG-INFO

5 writing top-level names to codigo_avulso_test_tutorial.egg-info/top_level.txt

6 writing dependency_links to codigo_avulso_test_tutorial.egg-info/dependency_links.txt

7 writing manifest file 'codigo_avulso_test_tutorial.egg-info/SOURCES.txt'

8 reading manifest file 'codigo_avulso_test_tutorial.egg-info/SOURCES.txt'

9 writing manifest file 'codigo_avulso_test_tutorial.egg-info/SOURCES.txt'


running check
10
Registering codigo-avulso-test-tutorial to https://testpypi.python.org/pypi
11
Server response (200): OK
12

Caso exista outro pacote com o mesmo nome, teríamos de escolher outro nome para o nosso pacote. Agora com nosso pacote
devidamente registrado, executamos o comando abaixo para que o pacote seja enviado para o PyPI Test
(https://testpypi.python.org/pypi).

1 python setup.py sdist upload -r pypitest

Se tudo ocorrer bem (Server responde 200), você verá uma saída semelhante a esta e já poderá ver sua aplicação na lista do PyPI
Test (https://testpypi.python.org/pypi).

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 4/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

1 running sdist

2 running egg_info

3 writing codigo_avulso_test_tutorial.egg-info/PKG-INFO

4 writing top-level names to codigo_avulso_test_tutorial.egg-info/top_level.txt

5 writing dependency_links to codigo_avulso_test_tutorial.egg-info/dependency_links.txt

6 reading manifest file 'codigo_avulso_test_tutorial.egg-info/SOURCES.txt'

7 writing manifest file 'codigo_avulso_test_tutorial.egg-info/SOURCES.txt'

8 warning: sdist: standard file not found: should have one of README, README.rst, README.txt

9
.
10
.
11
.
12
13
creating dist
14
Creating tar archive
15
removing 'codigo-avulso-test-tutorial-0.1.1' (and everything under it)
16
running upload
17
Submitting dist/codigo-avulso-test-tutorial-0.1.1.tar.gz to https://testpypi.python.org/pypi
18
Server response (200): OK
19

Enviando para PyPI Live


Agora é pra valer. Executamos o mesmo passos para o PyPI Test (https://testpypi.python.org/pypi).

1 python setup.py register -r pypi

Tudo ocorrendo bem, enviamos nosso pacote:

1 python setup.py sdist upload -r pypi

Parabéns! Com esse ultimo passo, publicamos o nosso pacote Python com sucesso! Agora ele pode ser visualizado na lista de
aplicações (https://pypi.python.org/pypi/codigo-avulso-test-tutorial/0.1.1) do PyPI (https://pypi.python.org/pypi) e ser instalado
usando pip.

1 pip install nomedopacote

Ou, para o nosso exemplo:

1 pip install codigo_avulso_test_tutorial

Conclusão
É isso, pessoal. Vimos como distribuir nossa aplicação Python, desde a crição na conta no PyPI (https://pypi.python.org/pypi) até o
registro e upload da nossa aplicação. Espero que tenham gostado e caso tenham alguma dúvida, deixem um comentário.

Obrigado pela leitura e até o próximo!

Referências

 Documentação oficial (https://wiki.python.org/moin/CheeseShopTutorial#Submitting_Packages_to_the_Package_Index)

 How to Host your Python Package on PyPI with GitHub (https://www.codementor.io/python/tutorial/host-your-python-package-


using-github-on-pypi)

 How to submit a package to PyPI (http://peterdowns.com/posts/first-time-with-pypi.html)

De 0 a 10, o quanto você recomendaria este artigo para um amigo?

0 1 2 3 4 5 6 7 8 9 10

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 5/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters
ARTIGOS PUBLICADOS POR ESTE AUTOR

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


1 MAI, 2018

Criando dicts a partir de outros dicts (https://imasters.com.br/back-end/criando-dicts-partir-de-outros-dicts)

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


2 FEV, 2018

Mate e Cinnamon: como reiniciar a configuração dos painéis de menu (https://imasters.com.br/desenvolvimento/mate-e-cinnamon-como-reiniciar-


configuracao-dos-paineis-de-menu)

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


8 NOV, 2017

Python – Calculando diferença de dias entre duas datas (https://imasters.com.br/back-end/python-calculando-diferenca-de-dias-entre-duas-datas)

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


14 AGO, 2017

Git – Realizando o checkout de Pull Requests localmente (https://imasters.com.br/devsecops/git-realizando-o-checkout-de-pull-requests-localmente)

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


26 MAI, 2017

Git – Como mover um subdiretório entre repositórios (https://imasters.com.br/desenvolvimento/git-como-mover-um-subdiretorio-entre-repositorios)

MICHELL STUTTGART (HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)


21 ABR, 2017

Peewee – Um ORM Python minimalista (https://imasters.com.br/back-end/peewee-um-orm-python-minimalista)

Michell Stuttgart
(http://codigoavulso.com.br) (mailto:michellstut@gmail.com)
12 Artigo(s)
SAIBA MAIS
(HTTPS://IMASTERS.COM.BR/PERFIL/MICHELLSTUTTGART)
Bacharel em Engenharia da Computação pela Universidade
Federal de Itajubá. É apaixonado por desenvolvimento de
software, tecnologia e ciências, além de ser entusiasta da
filosofia de Software Livre. Desenvolvedor Python e Linux
User, também contribui em diversos projetos Open Source
(incluindo projetos próprios) e colaborada nos blogs Código
Avulso e PythonClub. Sempre está em busca de novos
conhecimentos e de compartilhar o que aprende.

ASSINE NOSSA

Newsletter
Fique em dia com as novidades do iMasters! Assine nossa newsletter e receba
conteúdos especiais curados por nossa equipe

Qual é o seu e-mail?

ASSINAR

SOBRE O IMASTERS (HTTPS://IMASTERS.COM.BR/P/SOBRE-O-IMASTERS)

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 6/7
26/04/2023, 19:24 Como distribuir sua aplicação Python com PyPI | iMasters

POLÍTICA DE PRIVACIDADE (HTTPS://IMASTERS.COM.BR/P/POLITICA-DE-PRIVACIDADE)

FALE CONOSCO (HTTPS://IMASTERS.COM.BR/FALE-CONOSCO/)

QUERO SER AUTOR (HTTPS://IMASTERS.COM.BR/P/QUERO-SER-AUTOR)

FÓRUM (HTTPS://FORUM.IMASTERS.COM.BR/)

CBR (HTTPS://CRYPTOBUSINESSREVIEW.COM/)

https://imasters.com.br/back-end/como-distribuir-sua-aplicacao-python-com-pypi 7/7

Você também pode gostar