Ambientes virtuais em Python 3

Ambientes virtuais em Python 3
Como a maioria das pessoas, eu odeio instalar pacotes desnecessários na minha estação de trabalho. Depois de terminar com eles, desinstalá -los nunca é suficiente. Pacotes deixam para trás toneladas de pastas e arquivos. Eles exigem muitos outros pacotes (obscuros) também deixados para trás após as coisas. Lenta mas seguramente, essas coisas se acumulam em sua estação de trabalho e, embora não possam se livrar de nenhuma parte significativa do seu espaço em disco, elas podem causar outros problemas.

Dependências mais antigas

Pacotes mais antigos podem permanecer por aí e seu código python vai usá -los com prazer. Isso não é um problema se seus scripts python devem funcionar localmente, e não para fins industriais. Cientistas de dados, estudantes e até pessoas comuns automatizando sua tarefa diária podem continuar usando os pacotes mais antigos sem muito problema.

O problema começa quando você envia seu código para a produção. Quando você faz isso, é provável que você apenas envie seu script principal e não todas as dependências da embalagem. Por exemplo, se você escreveu um microsserviço a ser enviado como função da AWS Lambda, as primeiras linhas podem importar módulo de solicitação como este:

solicitação de importação

O pacote de solicitação fornecido pela AWS Lambda será diferente do seu mais antigo e, como resultado, o programa pode travar.

Conflitos

Conflitos também podem entrar em cena em que diferentes projetos usam versões diferentes do mesmo pacote. Talvez alguns de seus projetos mais antigos precisem dos pacotes de pip mais antigos. Mas você pode precisar do pacote mais recente para outros projetos. A execução do PIP Install -u atualizará o pacote em seu sistema operacional, causando problemas quando você voltar a manter seus projetos mais antigos.

Ambientes virtuais Python

Se você estiver usando qualquer versão do Python acima de 3.5, você pode usar um módulo embutido 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 de pip e outras dependências podem viver. A pasta também contém um script 'ativado'. 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 a instalação do PIP, 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, em seguida, 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 seu sistema. Pip só pode existir dentro de seu ambiente virtual, se você preferir dessa maneira.

Instalando Venv e criação de 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-venv

Em seguida, vamos ao diretório dentro do qual você deseja que seu diretório de ambiente virtual seja criado. Para mim, é ~/Project1

$ CD ~/Project1

Crie seu Venv com o seguinte comando, observe que o My-ENV é apenas o nome desse ambiente, você pode nomear o que quiser:

$ python3 -m venv my -env

Nota: algumas instalações do Python3, como as disponíveis no Windows, você chama o intérprete 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.

Depois que o comando terminar a execução, você notará uma nova pasta ~/Project1/my-evn. Para ativar o ambiente virtual My-ENV, você terá que::

  1. Correr,
    $ fonte ~/Project1/my-env/bin/ativação Se você estiver usando o Bash.
    Existem scripts alternativos chamados ativar.peixe e ativar.CSH para pessoas que usam fisos e conchas CSH, respectivamente.
  2. No Windows, o script pode ser chamado executando:
    >.\ my-env \ scripts \ ativar.bastão Se você estiver usando o prompt de comando, ou,
    >.\ my-env \ scripts \ ativar.ps1 Se você está 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 Solicitações de instalação
## podemos listar os pacotes instalados usando o comando 'pip congeling'
(my-env) $ pip3 congelamento
Certifi == 2018.10.15
CHARDET == 3.0.4
idna == 2.7
PKG-RESOURCES == 0.0.0
solicitações == 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 de ambiente virtual (MY-ENV), não importa onde você esteja no sistema de arquivos.

Para sair do ambiente virtual, você pode digitar desativado no prompt e voltará a usar a instalação em todo o sistema do Python. 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, basta excluir a pasta My-ENV que foi criada após a execução do módulo. Você pode criar quantos desses ambientes quiser.

Conclusão

Com o módulo Venv, os ambientes virtuais estão agora disponíveis como um recurso padrão do Python, especialmente se você instalar a partir do Python.org. Anteriormente, costumávamos ter muitas implementações de terceiros chamados VirtualEnv, Pyenv, etc.

Isso deu origem a software cada vez mais inchado, como a Anaconda, especialmente popular entre os cientistas de dados. É bom finalmente ter uma ferramenta simplista para gerenciar pacotes Python sem ter que instalar muitos outros lixo não relacionados. Você pode ler mais sobre Venv aqui.