Introdução
Python possui uma vasta biblioteca de módulos embutidos (baterias incluídas).
Existem ainda mais módulos de terceiros. Verifique-os no Índice de Pacotes Python ou PyPi. Ou simplesmente faça uma pesquisa no Google sobre um tópico específico.
Como lidar com dependências de terceiros é um tópico em constante evolução no Python. Esta seção cobre apenas o básico para ajudá-lo a entender como funciona.
O Caminho de Busca do Módulo
sys.path é um diretório que contém a lista de todos os diretórios verificados pela instrução import. Veja:
>>> import sys
>>> sys.path
... veja o resultado ...
>>>
Se você importar algo e ele não estiver localizado em um desses diretórios, você receberá uma exceção ImportError.
Módulos da Biblioteca Padrão
Módulos da biblioteca padrão do Python geralmente vêm de um local como `/usr/local/lib/python3.6'. Você pode descobrir com certeza tentando um pequeno teste:
>>> import re
>>> re
<module 're' from '/usr/local/lib/python3.6/re.py'>
>>>
Simplesmente olhar para um módulo no REPL é uma boa dica de depuração para se saber. Ele mostrará a localização do arquivo.
Módulos de Terceiros
Módulos de terceiros geralmente estão localizados em um diretório site-packages dedicado. Você o verá se executar as mesmas etapas acima:
>>> import numpy
>>> numpy
<module 'numpy' from '/usr/local/lib/python3.6/site-packages/numpy/__init__.py'>
>>>
Novamente, olhar para um módulo é uma boa dica de depuração se você estiver tentando descobrir por que algo relacionado a import não está funcionando como esperado.
Instalando Módulos
A técnica mais comum para instalar um módulo de terceiros é usar o pip. Por exemplo:
$ python3 -m pip install packagename
Este comando fará o download do pacote e o instalará no diretório site-packages.
Problemas
- Você pode estar usando uma instalação do Python que você não controla diretamente.
- Uma instalação aprovada pela empresa
- Você está usando a versão do Python que vem com o sistema operacional.
- Você pode não ter permissão para instalar pacotes globais no computador.
- Pode haver outras dependências.
Ambientes Virtuais
Uma solução comum para problemas de instalação de pacotes é criar o que se chama de "ambiente virtual" para você. Naturalmente, não existe uma "única maneira" de fazer isso - na verdade, existem várias ferramentas e técnicas concorrentes. No entanto, se você estiver usando uma instalação padrão do Python, pode tentar digitar o seguinte:
$ sudo apt install python3-venv
$ python -m venv mypython
bash %
Após alguns momentos de espera, você terá um novo diretório mypython que é sua própria pequena instalação do Python. Dentro desse diretório, você encontrará um diretório bin/ (Unix) ou um diretório Scripts/ (Windows). Se você executar o script activate encontrado lá, ele "ativará" esta versão do Python, tornando-a o comando python padrão para o shell. Por exemplo:
$ source mypython/bin/activate
(mypython) bash %
A partir daqui, você pode começar a instalar pacotes Python para você mesmo. Por exemplo:
(mypython) $ python -m pip install pandas
...
Para fins de experimentação e teste de diferentes pacotes, um ambiente virtual geralmente funcionará bem. Se, por outro lado, você estiver criando um aplicativo e ele tiver dependências específicas de pacotes, esse é um problema um pouco diferente.
Lidando com Dependências de Terceiros em Seu Aplicativo
Se você escreveu um aplicativo e ele tem dependências específicas de terceiros, um desafio diz respeito à criação e preservação do ambiente que inclui seu código e as dependências. Infelizmente, esta tem sido uma área de grande confusão e mudança frequente ao longo da vida do Python. Continua a evoluir mesmo agora.
Em vez de fornecer informações que certamente estarão desatualizadas em breve, refiro você ao Guia do Usuário de Empacotamento Python.
Exercício 9.4: Criando um Ambiente Virtual
Tente recriar as etapas de criação de um ambiente virtual e instalação do pandas nele, conforme mostrado acima.
Resumo
Parabéns! Você concluiu o laboratório de Módulos de Terceiros. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.