Resumos de projetos#

Resumos e links para os projetos mais relevantes no espaço de instalação e empacotamento do Python.

Projetos do PyPA#

bandersnatch#

Docs | Issues | GitHub | PyPI

bandersnatch is a PyPI mirroring client designed to efficiently create a complete mirror of the contents of PyPI. Organizations thus save bandwidth and latency on package downloads (especially in the context of automated tests) and to prevent heavily loading PyPI’s Content Delivery Network (CDN). Files can be served from a local directory or AWS S3.

construir#

Documentação | Issues | GitHub | PyPI

build é um construtor de pacotes Python compatível com a PEP 517. Ele fornece uma CLI para construir pacotes, bem como uma API Python.

cibuildwheel#

Documentação | Issues | GitHub | PyPI | Discussões | Discord #cibuildwheel

cibuildwheel é um pacote Python que constrói wheels para todas as plataformas comuns e versões Python na maioria dos sistemas CI. Veja também multibuild.

distlib#

Documentação | Issues | GitHub | PyPI

distlib é uma biblioteca que implementa funções de baixo nível relacionadas ao empacotamento e distribuição de software Python. distlib implementa várias PEPs relevantes (padrões de proposta de aprimoramento do Python) e é útil para desenvolvedores de ferramentas de empacotamento de terceiros para fazer e enviar distribuições binária e fonte, alcançar interoperabilidade, resolver dependências, gerenciar recursos de pacote e executar outras funções semelhantes.

Ao contrário do projeto empacotamento mais estrito (abaixo), que implementa especificamente padrões modernos de interoperabilidade de pacotes Python, distlib também tenta fornecer comportamentos de fallback razoáveis quando solicitados a lidar com pacotes legados e metadados anteriores à interoperabilidade moderna padrões e se enquadram no subconjunto de pacotes que são incompatíveis com esses padrões.

distutils#

O sistema de empacotamento original do Python, adicionado à biblioteca padrão no Python 2.0 e removido no 3.12.

Devido aos desafios de manter um sistema de empacotamento onde as atualizações de recursos estão fortemente acopladas às atualizações de tempo de execução da linguagem, o uso direto de distutils foi ativamente desencorajado, com Setuptools sendo o substituto preferido. Setuptools não apenas fornece recursos que o distutils simples não oferece (como declarações de dependência e declarações de ponto de entrada), ele também fornece uma interface de construção consistente e conjunto de recursos em todas as versões Python suportadas .

Consequentemente, distutils foi descontinuado no Python 3.10 por PEP 632 e foi removido da biblioteca padrão em Python 3.12. Setuptools inclui a cópia autônoma de distutils, e é injetado mesmo no Python < 3.12 se você importar setuptools primeiro ou usar pip.

flit#

Documentação | Issues | PyPI

O Flit fornece uma maneira simples de criar e enviar pacotes e módulos puro Python para o PyPI. Ele se concentra em facilitar as coisas fáceis para empacotar. O Flit pode gerar um arquivo de configuração para configurar rapidamente um projeto simples, construir distribuições fonte e wheels e enviá-los para PyPI.

Flit usa pyproject.toml para configurar um projeto. O Flit não depende de ferramentas como Setuptools para construir distribuições, ou twine para enviá-las ao PyPI. O Flit requer Python 3, mas você pode usá-lo para distribuir módulos para Python 2, desde que eles possam ser importados no Python 3.

O pacote flit é levantado por Matthias Bussonnier desde outubro de 2023 na plataforma do tidelift, e os fundos enviados para o PSF e destinados ao uso da PyPA.

hatch#

Documentação | GitHub | PyPI

Hatch é uma ferramenta de linha de comando unificada destinada para, de forma conveniente, gerenciar dependências e isolamento de ambiente para desenvolvedores Python. Os desenvolvedores de pacotes Python usam o Hatch e seu backend de construção Hatchling para configurar, criar versões, especificar dependências e publicar pacotes no PyPI. Seu sistema de plugins permite estender facilmente a funcionalidade.

empacotamento#

Documentação | Issues | GitHub | PyPI

Utilitários básicos para o empacotamento do Python usado por pip e Setuptools.

Os utilitários principais na biblioteca de empacotamento lidam com manipulação de versão, especificadores, marcadores, requisitos, tags e atributos e tarefas semelhantes para pacotes Python. A maioria dos usuários Python confia nesta biblioteca sem precisar chamá-la explicitamente; os desenvolvedores de outras ferramentas de empacotamento, distribuição e instalação Python listadas aqui geralmente usam sua funcionalidade para analisar, descobrir e, de outra forma, lidar com atributos de dependência.

Este projeto foca especificamente na implementação dos padrões modernos de interoperabilidade de pacotes Python definidos em Especificações do PyPA, e irá relatar erros para pacotes legados suficientemente antigos que são incompatíveis com esses padrões. Em contraste, o projeto distlib é uma biblioteca mais permissiva que tenta fornecer uma leitura plausível de metadados ambíguos em casos onde empacotamento irá relatar um erro.

pip#

Documentação | Issues | GitHub | PyPI

A ferramenta mais popular para instalação de pacotes Python e incluída nas versões modernas do Python.

Ele fornece os recursos básicos essenciais para localizar, baixar e instalar pacotes do PyPI e outros índices de pacotes do Python e pode ser incorporado em uma ampla gama de fluxos de trabalho de desenvolvimento por meio de sua interface de linha de comando (CLI).

Pipenv#

Documentação | Código-fonte | Issues | PyPI

Pipenv é um projeto que visa trazer o melhor de todos os mundos de empacotamento para o mundo Python. Ele agrega Pipfile, pip e virtualenv em um único conjunto de ferramentas. Ele pode autoimportar requirements.txt e também pode verificar por CVEs no Pipfile usando safety.

O Pipenv visa ajudar os usuários a gerenciar ambientes, dependências e pacotes importados na linha de comando. Ele também funciona bem no Windows (que outras ferramentas muitas vezes não atendem), cria e verifica hashes de arquivo, para garantir a conformidade com especificadores de dependência bloqueados por hash e facilita a desinstalação de pacotes e dependências.

Pipfile#

Código-fonte

Pipfile e sua irmã Pipfile.lock são uma alternativa centrada na aplicação de nível superior ao arquivo de baixo nível requirements.txt do pip.

pipx#

Documentação | GitHub | PyPI

pipx é uma ferramenta para instalar e executar aplicações de linha de comando Python sem causar conflitos de dependência com outros pacotes instalados no sistema.

Guia de Usuário para Empacotamento de Python#

Documentação | Issues | GitHub

Este guia!

readme_renderer#

GitHub e documentação | PyPI

readme_renderer é uma biblioteca que os desenvolvedores de pacote usam para renderizar seus arquivos de documentação de usuário (README) no HTML a partir de linguagens de marcação como Markdown ou reStructuredText. Os desenvolvedores o chamam por conta própria ou via twine, como parte de seu processo de gerenciamento de lançamento, para verificar se as descrições de seus pacotes serão exibidas corretamente no PyPI.

Setuptools#

Documentação | Issues | GitHub | PyPI

Setuptools (que inclui easy_install) é uma coleção de melhorias para o distutils do Python que permite a você construir e distribuir mais facilmente distribuições Python, especialmente aquelas que possuem dependências de outros pacotes.

trove-classifiers#

Issues | GitHub | PyPI

trove-classifiers é a fonte canônica para classificadores no PyPI, que os mantenedores de projetos usam para descrever sistematicamente seus projetos para que os usuários possam encontrar melhor os projetos que correspondem às suas necessidades no PyPI.

O pacote trove-classifiers contém uma lista de classificadores válidos e classificadores descontinuados (que são pareados com os classificadores que os substituem). Use este pacote para validar classificadores usados em pacotes destinados ao envio para o PyPI. Como esta lista de classificadores é publicada como código, você pode instalá-la e importá-la, proporcionando um fluxo de trabalho mais conveniente em comparação com a referência à lista publicada em PyPI. O rastreador de problemas para o projeto hospeda discussões sobre classificadores propostos e solicitações de novos classificadores.

twine#

Documentação | Issues | GitHub | PyPI

Twine é a principal ferramenta que os desenvolvedores usam para enviar pacotes para o índice de pacotes Python ou outros Python Package Index. É um programa de linha de comando que passa arquivos de programa e metadados para uma API web. Os desenvolvedores o usam porque é a ferramenta oficial de envio do PyPI, é rápida e segura, é mantida e funciona de forma confiável.

virtualenv#

Documentação | Issues | GitHub | PyPI

virtualenv é uma ferramenta para criar Ambientes Virtuais isolados do Python, de forma similar ao venv. Ao contrário de venv, virtualenv pode criar ambientes virtuais para outras versões de Python, que ele localiza usando a variável ambiente PATH. Ele também fornece recursos convenientes para configurar, manter, duplicar e solucionar ambientes virtuais. Para obter mais informações, consulte a seção Criando ambientes virtuais.

Warehouse#

Documentação | Issues | GitHub

A base de código atual que alimenta o Python Package Index (PyPI). Está hospedado em pypi.org. A fonte padrão para downloads do pip.

wheel#

Documentação | Issues | GitHub | PyPI

Primeiramente, o projeto wheel oferece a extensão bdist_wheel do Setuptools para criar distribuições wheel. Além disso, oferece seu próprio utilitário de linha de comando para criar e instalar wheels.

Veja também auditwheel, uma ferramenta que os desenvolvedores de pacotes usam para verificar e corrigir pacotes Python que eles estão fazendo no formato de roda binária. Ele fornece funcionalidade para descobrir dependências, verificar a conformidade dos metadados e corrigir wheel e os metadados para vincular e incluir bibliotecas externas compartilhadas em um pacote.

Projetos não-PyPA#

buildout#

Documentação | Issues | PyPI | GitHub

Buildout é um sistema de construção baseado em Python para criar, montar e distribuir aplicações de várias partes, algumas das quais podem ser não baseadas em Python. Ele permite que você crie uma configuração de buildout e reproduza o mesmo software posteriormente.

conda#

Documentação

conda é a ferramenta de gerenciamento de pacotes para as instalações do Anaconda Python . Anaconda Python é uma distribuição do Anaconda, Inc voltada especificamente para a comunidade científica, e em particular no Windows onde a instalação de extensões binárias é frequentemente difícil .

Conda é uma ferramenta completamente separada de pip, virtualenv e wheel, mas fornece muitos de seus recursos combinados em termos de gerenciamento de pacotes, gerenciamento de ambiente virtual e implantação de extensões binárias.

O Conda não instala pacotes do PyPI e pode instalar apenas a partir dos repositórios oficiais do Anaconda, ou anaconda.org (um local para pacotes conda contribuídos pelo usuário), ou um servidor de pacotes local (por exemplo, intranet). No entanto, observe que pip pode ser instalado e trabalhar lado a lado com o conda para gerenciar distribuições do PyPI. Além disso, conda skeleton é uma ferramenta para fazer pacotes Python instaláveis pelo conda primeiro obtendo-os em PyPI e modificando seus metadados.

devpi#

Documentação | Issues | PyPI

devpi features a powerful PyPI-compatible server and PyPI proxy cache with a complementary command line tool to drive packaging, testing and release activities with Python. devpi also provides a browsable and searchable web interface. devpi supports mirroring PyPI, multiple package indexes with inheritance, syncing between these indexes, index replication and fail-over, and package upload.

dumb-pypi#

GitHub | PyPI

dumb-pypi is a simple package index static file site generator, which then must be hosted by a static file webserver to become the package index. It supports serving the hash, core-metadata, and yank-status.

enscons#

Código-fonte | Issues | PyPI

Enscons é uma ferramenta de empacotamento Python baseada em SCons. Ele cria distribuições de código-fonte compatíveis com pip e wheels sem usar distutils ou setuptools, incluindo distribuições com extensões C. Enscons tem uma arquitetura e filosofia diferente de distutils. Em vez de adicionar recursos de compilação a um sistema de empacotamento Python, enscons adiciona empacotamento Python a um sistema de construção de propósito geral. Enscons ajuda você a construir sdists que podem ser construídos automaticamente por pip, e wheels que são independentes de enscons.

Flask-Pypi-Proxy#

Docs | GitHub | PyPI

Aviso

Not maintained, project archived

Flask-Pypi-Proxy is a package index as a cached proxy for PyPI.

Hashdist#

Documentação | GitHub

Hashdist é uma biblioteca para construir distribuições de software que não dependem do root. Hashdist está tentando ser “o preferido do Debian para os casos em que a tecnologia Debian não funciona”. A melhor maneira para Pythonistas pensarem sobre Hashdist pode ser um híbrido mais poderoso de virtualenv e buildout. Ele tem como objetivo resolver o problema de instalação de software científico e tornar a distribuição de pacotes sem estado, com cache e com capacidade de distribuição. É usado por alguns pesquisadores, mas não tem manutenção desde 2016.

Maturin#

Documentação | GitHub

Maturin é um backend de construção para módulos de extensão Rust, também escrito em Rust. Ele oferece suporte à construção de rodas para python 3.7+ em Windows, Linux, macOS e FreeBSD, pode enviá-las para PyPI e tem suporte básico a PyPy e GraalPy.

meson-python#

Documentação | GitHub

meson-python é um backend de compilação que usa o sistema de compilação Meson. Ele permite que os autores de pacotes Python usem o Meson como o sistema de compilação para seus pacotes. Ele oferece suporte a uma ampla variedade de linguagens, incluindo C, e é capaz de atender às necessidades das configurações de compilação mais complexas.

multibuild#

GitHub

Multibuild é um conjunto de scripts de CI para construir e testar Python wheels para Linux, macOS e (menos flexível) Windows. Veja também cibuildwheel.

nginx_pypi_cache#

GitHub

nginx_pypi_cache is a package index caching proxy using nginx.

pdm#

Documentação | GitHub | PyPI

PDM é um gerenciador de pacotes Python moderno. Ele também usa pyproject.toml para armazenar metadados do projeto conforme definido em PEP 621.

pex#

Documentação | GitHub | PyPI

Pex is a tool for generating .pex (Python EXecutable) files, standalone Python environments in the spirit of virtualenv. PEX files are zipapps that make deployment of Python applications as simple as cp. A single PEX file can support multiple target platforms and can be created from standard pip-resolvable requirements, a lockfile generated with pex3 lock ... or even another PEX. PEX files can optionally have tools embedded that support turning the PEX file into a standard venv, graphing dependencies and more.

pip-tools#

Documentação | GitHub | PyPI

pip-tools é um conjunto de ferramentas destinadas aos administradores de sistema Python e gerentes de lançamento que desejam manter suas compilações determinísticas e, ao mesmo tempo, manter-se atualizado com as novas versões de suas dependências. Os usuários podem especificar a liberação particular de suas dependências por meio de hash, fazer convenientemente uma lista devidamente formatada de requisitos de informações em outras partes de seu programa, atualizar todas as dependências (um recurso pip atualmente não fornece) e criar camadas de restrições para o programa obedecer.

pip2pi#

GitHub | PyPI

pip2pi is a package index server where specific packages are manually synchronised.

piwheels#

Site | Documentação | GitHub

piwheels é um site, e o software que o sustenta, que busca pacotes de distribuição de código-fonte do PyPI e os compila em wheels binários que são otimizadas para instalação em computadores Raspberry Pi. O Raspberry Pi OS pré-configura pip para usar piwheels.org como um índice adicional para PyPI.

poetry#

Documentação | GitHub | PyPI

poetry é uma ferramenta de linha de comando para lidar com a instalação de dependências e isolamento, bem como construção e empacotamento de pacotes Python. Ele usa pyproject.toml e, ao invés de depender da funcionalidade do resolvedor no pip, fornece seu próprio resolvedor de dependências. Ele tenta acelerar a experiência dos usuários de instalação e resolução de dependências, armazenando localmente em cache os metadados sobre as dependências.

proxpi#

GitHub | PyPI

proxpi is a simple package index which proxies PyPI and other indexes with caching.

Pulp-python#

Docs | GitHub | PyPI

Pulp-python is the Python package index plugin for Pulp. Pulp-python supports mirrors backed by local or AWS S3, package upload, and proxying to multiple package indexes.

PyPI Cloud#

Docs | GitHub | PyPI

Aviso

Not maintained, project archived

PyPI Cloud is a package index server, backed by AWS S3 or another cloud storage service, or local files. PyPI Cloud supports redirect/cached proxying for PyPI, as well as authentication and authorisation.

pypiprivate#

GitHub | PyPI

pypiprivate serves a local (or AWS S3-hosted) directory of packages as a package index.

pypiserver#

GitHub | PyPI

pypiserver is a minimalist application that serves as a private Python package index (from a local directory) within organizations, implementing a simple API and browser interface. You can upload private packages using standard upload tools, and users can download and install them with pip, without publishing them publicly. Organizations who use pypiserver usually download packages both from pypiserver and from PyPI.

PyScaffold#

Documentação | GitHub | PyPI

PyScaffold é um gerador de projeto para inicialização de pacotes Python, pronto para ser compartilhado no PyPI e instalável via pip. Ele se baseia em um conjunto de configurações padrão sãs para ferramentas estabelecidas (como o Setuptools, pytest e Sphinx) para fornecer um ambiente produtivo para que os desenvolvedores possam começar a codificar imediatamente. PyScaffold também pode ser usado com projetos existentes para tornar o empacotamento mais fácil.

pywharf#

GitHub | PyPI

Aviso

Not maintained, project archived

pywharf is a package index server, serving files locally or from GitHub.

scikit-build#

Documentação | GitHub | PyPI

Scikit-build é um wrapper do Setuptools para CPython que constrói extensões C/C++/Fortran/Cython. Ele usa cmake (disponível em PyPI) para fornecer melhor suporte para compiladores adicionais, sistemas de construção, compilação cruzada e localização de dependências e seus requisitos de compilação associados. Para acelerar e paralelizar a construção de grandes projetos, o usuário pode instalar ninja (também disponível em PyPI).

scikit-build-core#

Documentação | GitHub | PyPI

Scikit-build-core é um back-end de construção para extensões CPython C/C++/Fortran/Cython. Ele permite que os usuários escrevam extensões com cmake (disponível no PyPI) para fornecer melhor suporte para compiladores adicionais, sistemas de construção, compilação cruzada e localização de dependências e suas construções associadas requisitos. CMake/Ninja são baixados automaticamente do PyPI se não estiverem disponíveis no sistema.

shiv#

Documentação | GitHub | PyPI

shiv é um utilitário de linha de comando para construir zipapps Python totalmente autocontidos conforme descrito na PEP 441, mas com todas as suas dependências incluídas. Seu objetivo principal é tornar a distribuição Python de aplicações e ferramentas de linha de comando rápida e fácil.

simpleindex#

GitHub | PyPI

simpleindex is a package index which routes URLs to multiple package indexes (including PyPI), serves local (or cloud-hosted, for example AWS S3, with a custom plugin) directories of packages, and supports custom plugins.

Spack#

Documentação | GitHub | Artigo | Slides

Um gerenciador de pacotes flexível projetado para oferecer suporte a várias versões, configurações, plataformas e compiladores. O Spack é como o Homebrew, mas os pacotes são escritos em Python e parametrizados para permitir fácil troca de compiladores, versões de bibliotecas, opções de construção, etc. Arbitrariamente, muitas versões de pacotes podem coexistir no mesmo sistema. O Spack foi projetado para construir rapidamente aplicações científicas de alto desempenho em clusters e supercomputadores.

O Spack não está no PyPI (ainda), mas não requer instalação e pode ser usado imediatamente após a clonagem do GitHub.

zest.releaser#

Documentação | GitHub | PyPI

zest.releaser é uma ferramenta de lançamento de pacote Python que fornece uma camada de abstração sobre twine. Os desenvolvedores Python usam zest.releaser para automatizar o incremento de números de versão de pacote, atualizando changelogs, marcando lançamentos no controle de fontes e enviando novos pacotes para PyPI.

Projetos de biblioteca padrão#

ensurepip#

Documentação | Issues

Um pacote na Biblioteca Padrão do Python que fornece suporte para preparar o pip em uma instalação existente do Python ou em ambiente virtual. Na maioria dos casos, os usuários finais não usarão este módulo, mas em vez disso, ele será usado durante a construção da distribuição Python.

http.server#

Docs | Issues

A package and command-line interface which can host a directory as a website, for example as a package index (see Hospedando seu próprio repositório simples).

venv#

Documentação | Issues

Um pacote na Biblioteca Padrão do Python (começando com Python 3.3) para criar Ambientes Virtuais. Para obter mais informações, consulte a seção Criando ambientes virtuais.