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.564 ]

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


Introdução



Python hoje em dia está presente em 100% das distribuições GNU/Linux, muitas das ferramentas essenciais do sistema operacional foram criadas nestas linguagem. Porém, assim como na maioria das linguagens, Python também sofre com problemas de compatibilidade entre versões da linguagem e de suas bibliotecas.

Desde dezembro de 2008 existem basicamente dois tipos de Python, o 2.x e o 3.x. Muito código escrito em Python 2.x é incompatível com a versão 3.x e vice-versa.

O Python 3.x obviamente traz muitas vantagens sobre o 2.x e atualmente, para quem está iniciando um projeto, recomenda-se optar pela última versão da linguagem.

Sua distribuição Linux provavelmente possui as 2 versões do interpretador do comando e geralmente a versão padrão é a 2.x. Você pode conferir isso digitando:

python --version
Python 2.7.13

python3 --version
Python 3.5.3

Para início de conversa, se você está começando um projeto Python, irá precisar digitar "python3" ao invés de apenas "python" toda vez que for executar seus scripts.

Agora vamos supor que você irá usar algumas bibliotecas em seu projeto e seu código está diretamente atrelado às suas versões. Determinado dia você acorda, dá um dist-upgrade e bah, descobre que o sistema operacional atualizou as bibliotecas e seu código se tornou incompatível com as novas versões. Ok, isso é raro de acontecer, mas é possível.

Beleza então, já entendemos os problemas (assim espero), vamos à solução! E ela atende pelo nome virtualenv.

Instalando o Python Package Installer

Para instalar a biblioteca virtualenv precisaremos do pip (Python Package Installer). Em distribuições Debian ou derivadas, você pode instalar com:

Python 2.x:

sudo apt install python-pip

Python 3.x:

sudo apt install python3-pip

Usuários de outras distribuições podem pesquisar em seu gerenciador de pacotes por "python pip", dou garantias de que existe o pacote no repositório oficial de sua distro.

Instalando o módulo virtualenv

O virtualenv é uma biblioteca/módulo Python. Em Debian e derivados é possível instalá-lo via APT, mas aqui demonstrarei como instalá-lo via pip.

Python 2.x:

pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/7c/17/9b7b6cddfd255388b58c61e25b091047f6814183e1d63741c8df8dcd65a2/virtualenv-16.1.0-py2.py3-none-any.whl (1.9MB)
    100% |████████████████████████████████| 1.9MB 494kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.1.0


Python 3.x:

pip3 install virtualenv
Collecting virtualenv
  Using cached https://files.pythonhosted.org/packages/7c/17/9b7b6cddfd255388b58c61e25b091047f6814183e1d63741c8df8dcd65a2/virtualenv-16.1.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-16.1.0


E agora vamos testar a instalação, o comando abaixo deverá retornar a página de help do virtualenv:

python -m virtualenv
ou
python3 -m virtualenv

You must provide a DEST_DIR
Usage: virtualenv.py [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -v, --verbose         Increase verbosity.
  -q, --quiet           Decrease verbosity.
  -p PYTHON_EXE, --python=PYTHON_EXE
                        The Python interpreter to use, e.g.,
                        --python=python3.5 will use the python3.5 interpreter
                        to create the new environment.  The default is the
                        interpreter that virtualenv was installed with
                        (/usr/bin/python3)
  --clear               Clear out the non-root install and start from scratch.
  --no-site-packages    DEPRECATED. Retained only for backward compatibility.
                        Not having access to global site-packages is now the
                        default behavior.
  --system-site-packages
                        Give the virtual environment access to the global
                        site-packages.
  --always-copy         Always copy files rather than symlinking.
  --relocatable         Make an EXISTING virtualenv environment relocatable.
                        This fixes up scripts and makes all .pth files
                        relative.
  --no-setuptools       Do not install setuptools in the new virtualenv.
  --no-pip              Do not install pip in the new virtualenv.
  --no-wheel            Do not install wheel in the new virtualenv.
  --extra-search-dir=DIR
                        Directory to look for setuptools/pip distributions in.
                        This option can be used multiple times.
  --download            Download preinstalled packages from PyPI.
  --no-download, --never-download
                        Do not download preinstalled packages from PyPI.
  --prompt=PROMPT       Provides an alternative prompt prefix for this
                        environment.
  --setuptools          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.
  --distribute          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.
  --unzip-setuptools    DEPRECATED.  Retained only for backward compatibility.
                        This option has no effect.

    Próxima página

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

Python - Usando requests anônimos através da rede Tor

Acessando disquetes no Linux

Kdenlive - Como desfocar/borrar rosto, área ou objetos em um vídeo

Implementando um tradutor de línguas no seu web site

Semana da velharia no VOL

Leitura recomendada

Python para pesquisadores: material didático

Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

Monitorando produtos no ML com Python 3 via BeautifulSoup

Robótica com Android e Arduino

Programe em Python no jogo Minecraft com seu filho ou sozinho

  
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