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: 5.970 ]

Por: Fábio Berbert de Paula em 13/12/2018 | Blog: https://youtube.com/c/cotidianohackeado


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

Semana da velharia no VOL

EAuthenticator - Clone do Google Authenticator para Linux

Tradutor de palavras em vários idiomas via shell

Root no Samsung Galaxy S3 usando GNU/Linux

Tasker - Como fazer um ANDROID falante

Leitura recomendada

Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais

paramiko - Python + SSH

rwd - Restart When Down

Arduino com Bluetooth e pySerial

Python + ADB

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário