Como isolar seus projetos Python com virtualenv (ambiente virtual)

Neste artigo lhes apresento o virtualenv, uma ferramenta que nos traz a habilidade de isolar o interpretador e as bibliotecas de nossos projetos Python, reduzindo o risco de problemas de versionamento e quebra de dependências caso o sistema operacional seja atualizado.

[ Hits: 8.558 ]

Por: Fábio Berbert de Paula em 13/12/2018 | Blog: https://fabio.automatizando.dev


Criando uma virtualenv



Agora que já temos o módulo instalado, vamos criar nosso primeiro projeto usando uma virtualenv.

O primeiro passo é criar o diretório do projeto:

mkdir meuLab
cd meuLab

Criar a virtualenv. Neste exemplo utilizarei o Python 3.x:

python3 -m virtualenv venv

O que aconteceu? O Python criou um diretório chamado "venv" no local atual. Veja:

find venv
venv
venv/include
venv/include/python3.5m
venv/bin
venv/bin/python3
venv/bin/activate
venv/bin/wheel
venv/bin/imgurscrot
venv/bin/easy_install-3.5
venv/bin/activate.ps1
venv/bin/activate_this.py
venv/bin/chardetect
venv/bin/python-config
venv/bin/pip
venv/bin/python
venv/bin/python3.5
venv/bin/activate.csh
venv/bin/easy_install
venv/bin/pip3
venv/bin/pip3.5
venv/bin/activate.fish
venv/lib
venv/lib/python3.5
venv/lib/python3.5/_weakrefset.py
venv/lib/python3.5/operator.py
venv/lib/python3.5/fnmatch.py
.
.
.
venv/lib/python3.5/orig-prefix.txt
venv/lib/python3.5/config-3.5m-x86_64-linux-gnu
venv/lib/python3.5/imp.py
venv/lib/python3.5/functools.py
venv/lib/python3.5/encodings
venv/lib/python3.5/os.py
venv/lib/python3.5/linecache.py
venv/lib/python3.5/_dummy_thread.py
venv/lib/python3.5/genericpath.py
venv/lib/python3.5/hmac.py
venv/lib/python3.5/random.py
venv/lib/python3.5/lib-dynload
venv/lib/python3.5/sre_constants.py
venv/lib/python3.5/heapq.py
venv/lib/python3.5/abc.py


Agora vamos ativar o ambiente virtual:

source venv/bin/activate

Note que agora há um prefixo "(venv)" no seu terminal:

(venv) $

Você agora está enjaulado num ambiente Python 3.x, os comandos "python" e "pip", ao invés de invocarem a versão padrão do sistema, que é a 2.x, invocarão a versão enjaulada que acabaste de criar:

(venv) $ python --version
Python 3.5.3

(venv) $ pip --version
pip 18.1 from /home/fabio/artigos/meuLab/venv/lib/python3.5/site-packages/pip (python 3.5)

Para este artigo criarei um simples script para capturar a tela do computador que utiliza a biblioteca pyautogui, que por sua vez depende da Xlib para funcionar.

Então vamos lá:

(venv) $ pip install Xlib pyautogui
Collecting Xlib
  Using cached https://files.pythonhosted.org/packages/3f/00/321541273b0ed2167b36c82be9baeb0bdc8af1c11c1b01de9436b84b5eaf/xlib-0.21-py2.py3-none-any.whl
Collecting pyautogui
Requirement already satisfied: six>=1.10.0 in ./venv/lib/python3.5/site-packages (from Xlib) (1.12.0)
Requirement already satisfied: pyscreeze in ./venv/lib/python3.5/site-packages (from pyautogui) (0.1.18)
Requirement already satisfied: Pillow in ./venv/lib/python3.5/site-packages (from pyautogui) (5.3.0)
Requirement already satisfied: pymsgbox in ./venv/lib/python3.5/site-packages (from pyautogui) (1.0.6)
Requirement already satisfied: PyTweening>=1.0.1 in ./venv/lib/python3.5/site-packages (from pyautogui) (1.0.3)
Installing collected packages: Xlib, pyautogui
Successfully installed Xlib-0.21 pyautogui-0.9.39


Note que ambas as bibliotecas foram instaladas dentro de sua jaula, no diretório "venv":
  • venv/lib/python3.5/site-packages/Xlib
  • venv/lib/python3.5/site-packages/pyautogui

E agora vamos ao código:

(venv) $ vim captura-tela.py

import pyautogui
pyautogui.screenshot("minha-tela.png")

Executar:

(venv) $ python captura-tela.py

NOTA: em caso de erro na execução, instale o scrot, que é dependência do pyautogui.screenshot:

(venv) $ sudo apt install scrot

Para desativar o ambiente virtual basta digitar:

(venv) $ deactivate

E sempre que quiser voltar a trabalhar no ambiente, entre no diretório do projeto e repita o comando:

source venv/bin/activate

Viram como é simples trabalhar com ambientes virtuais em Python? Não deixe de adotar essa prática, ela é EXTREMAMENTE recomendável.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Criando uma virtualenv
Outros artigos deste autor

Adote um projeto, ajude o Viva o Linux

MP3 no Linux

Convertendo Texto em Fala com Python e pyttsx3

Verificando integridade de servidores POP com PHP/sockets

Resumo do VOL DAY I

Leitura recomendada

Redes definidas por Software com Mininet e POX - Criando meu primeiro Controlador

Construindo um portscanner TCP com Python

RapidScan - Multi-Tool WEB Vulnerability Scanner

Introdução ao clib (Command Line Book)

OAK: Câmera Open Source de Visão Computacional com AI

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts