Instalando pacotes científicos#

O software científico tende a ter dependências mais complexas do que a maioria e, frequentemente, terá várias opções de construção para tirar proveito de diferentes tipos de hardware ou para interoperar com diferentes partes de software externo.

Em particular, NumPy, que fornece a base para a maioria do software na pilha científica Python pode ser configurado para interoperar com diferentes bibliotecas FORTRAN e pode tirar proveito de diferentes níveis de instruções vetorizadas disponíveis em CPUs modernas.

A partir da versão 1.10.4 do NumPy e da versão 1.0.0 do SciPy, binários pré-construídos de 32 e 64 bits no formato wheel estão disponíveis para todos os principais sistemas operacionais (Windows, macOS e Linux) em PyPI. Observe, no entanto, que no Windows, os binários do NumPy são vinculados à biblioteca BLAS/LAPACK do ATLAS, restrita às instruções SSE2, portanto, podem não fornecer desempenho da álgebra linear.

Existem várias opções alternativas para obter bibliotecas científicas Python (ou quaisquer outras bibliotecas Python que requerem um ambiente de compilação para instalar a partir do código-fonte e não fornecem arquivos de wheel pré-construídos no PyPI).

Construindo a partir do código-fonte#

A mesma complexidade que torna difícil distribuir o NumPy (e muitos dos projetos que dependem dele) como arquivos wheel também torna difícil construí-los a partir do código-fonte. No entanto, para pessoas intrépidas que estão dispostas a gastar o tempo discutindo compiladores e vinculadores para C e FORTRAN, construir a partir do código-fonte é sempre uma opção.

Pacotes de distribuição Linux#

Para usuários Linux, o gerenciador de pacotes do sistema frequentemente terá versões pré-compiladas de várias peças de software científico, incluindo NumPy e outras partes da pilha científica Python.

Se usar versões que podem ter vários meses é aceitável, então esta é provavelmente uma boa opção (apenas certifique-se de permitir o acesso às distribuições instaladas no sistema Python ao usar ambientes virtuais).

Instaladores para Windows#

Muitos projetos Python que não publicam (ou não podem) atualmente publicar arquivos wheel, pelo menos publicam instaladores Windows, seja no PyPI ou na página de download de seus projetos. O uso desses instaladores permite que os usuários evitem a necessidade de configurar um ambiente adequado para construir extensões localmente.

As extensões fornecidas nesses instaladores são normalmente compatíveis com os instaladores do CPython para o Windows publicados em python.org.

Tal como acontece com os pacotes de sistema Linux, os instaladores Windows irão apenas instalar em uma instalação de sistema Python – eles não oferecem suporte à instalação em ambientes virtuais. Permitir o acesso a distribuições instaladas no sistema Python ao usar ambientes virtuais é uma abordagem comum para contornar essa limitação.

O projeto Wheel também fornece um subcomando wheel convert que pode converter um instalador para Windows bdist_wininst em um wheel.

Instaladores e gerenciadores de pacote para macOS#

Semelhante à situação no Windows, muitos projetos (incluindo NumPy) publicam instaladores para macOS que são compatíveis com os binários do CPython para macOS publicados em python.org.

Os usuários do macOS também têm acesso aos gerenciadores de pacotes de estilo de distribuição Linux, como Homebrew. O site SciPy tem mais detalhes sobre como usar Homebrew para instalar SciPy no macOS.

Distribuições SciPy#

O site SciPy lista várias distribuições que fornecem a pilha SciPy completa para usuários finais em um formato fácil de usar e atualizar.

Algumas dessas distribuições podem não ser compatíveis com o conjunto de ferramentas padrão pip e virtualenv.

Spack#

Spack é um gerenciador de pacotes flexível projetado para oferecer suporte a múltiplas versões, configurações, plataformas e compiladores. Ele foi construído para dar suporte às necessidades de grandes centros de supercomputação e equipes de aplicações científicas, que frequentemente precisam criar software de muitas maneiras diferentes. O Spack não está limitado a Python; ele pode instalar pacotes para C, C++, Fortran, R e outras linguagens. É não destrutivo; instalar uma nova versão de um pacote não interrompe as instalações existentes, portanto, muitas configurações podem coexistir no mesmo sistema.

O Spack oferece uma sintaxe simples, mas poderosa, que permite aos usuários especificar versões e opções de configuração de forma concisa. Os arquivos de pacote são escritos em puro Python e são modelados para que seja fácil trocar compiladores, implementações de dependência (como MPI), versões e opções de construção com um único arquivo de pacote. O Spack também gera arquivos de módulo para que os pacotes possam ser carregados e descarregados do ambiente do usuário.

O gerenciador de pacotes multiplataforma conda#

Anaconda é uma distribuição Python publicada pela Anaconda, Inc. É uma coleção estável de pacotes de código aberto para big data e uso científico. A partir da versão 5.0 do Anaconda, cerca de 200 pacotes são instalados por padrão, e um total de 400-500 podem ser instalados e atualizados a partir do repositório Anaconda.

conda é um sistema de gerenciamento de pacotes e de gerenciamento de ambiente de código aberto (licenciado por BSD) incluído no Anaconda que permite aos usuários instalar várias versões de pacotes de software binários e suas dependências, e alternar facilmente entre eles. É uma ferramenta multiplataforma que funciona no Windows, no macOS e no Linux. O Conda pode ser usado para empacotar e distribuir todos os tipos de pacotes, não está limitado apenas a pacotes Python. Possui suporte total para ambientes virtuais nativos. Conda torna os ambientes cidadãos de primeira classe, facilitando a criação de ambientes independentes até mesmo para bibliotecas C. Está escrito em Python, mas é agnóstico ao Python. O Conda gerencia o próprio Python como um pacote, de forma que conda update python seja possível, em contraste com o pip, que gerencia apenas os pacotes Python. O Conda está disponível no Anaconda e no Miniconda (um download fácil de instalar com apenas Python e conda).