Dependências mais antigas
Pacotes mais antigos podem demorar e seu código Python os usará alegremente. Isso não é um problema se seus scripts Python são feitos para rodar localmente, e não para fins industriais. Cientistas de dados, estudantes e até mesmo pessoas comuns que automatizam suas tarefas diárias podem simplesmente continuar usando os pacotes mais antigos sem muitos problemas.
O problema começa quando você envia seu código para produção. Ao fazer isso, é provável que você apenas envie seu script principal e não todas as dependências do pacote. Por exemplo, se você escreveu um microsserviço para ser enviado como função AWS Lambda, as primeiras linhas podem importar o módulo de solicitação como este:
pedido de importaçãoO pacote de solicitação fornecido pelo AWS lambda será diferente do mais antigo e, como resultado, o programa pode travar.
Conflitos
Os conflitos também podem surgir quando diferentes projetos usam diferentes versões do mesmo pacote. Talvez alguns de seus projetos mais antigos precisem dos pacotes pip mais antigos. Mas você pode precisar do pacote mais recente para outros projetos. Executando pip install -U
Ambientes virtuais Python
Se você estiver usando qualquer versão do Python acima de 3.5, você pode usar um módulo integrado chamado venv para criar o que é chamado de Ambientes Virtuais Python. O que este módulo faz é criar uma pasta ou diretório isolado onde todos os seus pacotes pip e outras dependências podem viver. A pasta também contém um script de 'ativação'. Sempre que você quiser usar um ambiente virtual específico, basta executar este script após o qual apenas os pacotes contidos nesta pasta podem ser acessados. Se você executar pip install, os pacotes serão instalados dentro desta pasta e em nenhum outro lugar. Depois de terminar de usar um ambiente, você pode simplesmente 'desativá-lo' e então apenas os pacotes globais de pip estarão disponíveis para você.
Se você estiver usando o Ubuntu 18.04 e acima, você nem precisa instalar o gerenciador de pacotes pip em todo o sistema. Pip só pode existir dentro do seu ambiente virtual se você preferir assim.
Instalando o venv e criando ambientes virtuais
Ubuntu 18.04 LTS sai da caixa com Python 3.6.x, mas o módulo Python venv não está instalado, nem o pip. Vamos instalar apenas venv.
$ apt install python3-venvEm seguida, vamos para o diretório dentro do qual você deseja que o diretório do seu ambiente virtual seja criado. Para mim é ~ / project1
$ cd ~ / project1Crie seu venv com o seguinte comando, observe que my-env é apenas o nome desse ambiente, você pode nomeá-lo como quiser:
$ python3 -m venv my-envNota: Algumas instalações Python3, como as disponíveis no Windows, você chama o interpretador Python usando apenas python e não python3, mas isso muda de sistema para sistema. Por uma questão de consistência, usarei apenas python3.
Após o término da execução do comando, você notará uma nova pasta ~ / project1 / my-evn. Para ativar o ambiente virtual my-env, você terá que:
- Corre,
$ source ~ / project1 / my-env / bin / activate
se você estiver usando Bash.
Existem scripts alternativos chamados de ativar.pescar e ativar.csh para pessoas que usam cascas de peixe e csh, respectivamente. - No Windows, o script pode ser invocado executando:
>.\ my-env \ Scripts \ activate.bastão
se você estiver usando o prompt de comando, ou,>.\ my-env \ Scripts \ activate.ps1
se você estiver usando o PowerShell.
Usando ambientes virtuais
Depois de executar o script com sucesso, você notará que o prompt muda para algo como o que é mostrado abaixo, agora você pode instalar pacotes usando pip:
(my-env) $ pip3 pedidos de instalação## Podemos listar os pacotes instalados usando o comando 'pip freeze'
(my-env) $ pip3 freeze
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
pedidos == 2.20.1
urllib3 == 1.24.1
Enquanto o ambiente virtual estiver ativo (conforme indicado pelo prompt) todos os pacotes serão salvos apenas no diretório do ambiente virtual (my-env), não importa onde você esteja no sistema de arquivos.
Para sair do ambiente virtual, você pode digitar desativar no prompt e você voltará a usar a instalação do Python em todo o sistema. Você pode notar que os novos pacotes que acabamos de instalar não serão mostrados na instalação global do pip.
Para se livrar do ambiente virtual, simplesmente exclua a pasta my-env que foi criada após a execução do módulo. Você pode criar quantos desses ambientes desejar.
Conclusão
Com o módulo venv, os ambientes virtuais agora estão disponíveis como um recurso padrão do Python, especialmente se você instalar a partir do Python.org. Anteriormente, tínhamos muitas implementações de terceiros chamadas virtualenv, pyenv, etc.
Isso deu origem a softwares cada vez mais inchados como o Anaconda, especialmente popular entre os cientistas de dados. É bom finalmente ter uma ferramenta simplista para gerenciar pacotes Python sem ter que instalar um monte de outro lixo não relacionado. Você pode ler mais sobre venv aqui.