• Mostrando resultados da busca por {{ posts_busca["corrected"] }} {{termo_busca}}
  • {{post.title}}
  • Não foram encontrados resultados para {{ posts_busca["corrected"] }} {{termo_busca}}

Como utilizar Virtualenv no python

Caue Santos - Analista de Operações de Hosting N2 na KingHost

Virtualenv é uma ferramenta muito útil desenvolvida pela comunidade do Python para fornecer uma maneira para isolar ambientes de desenvolvimento.

O que é um Virtualenv

Virtualenvs são uma forma de isolar diversos ambientes de desenvolvimento, assim permitindo ao programador utilizar versões específicas de diversos pacotes sem impactar instalações de outras aplicações ou sistemas.

Quando criamos ela, será inicializado uma “instalação do python” completa, com o executável do python, pip e setup-tools.

No ambiente KingHost virtualenvs são suportados e bastante importantes, já que permitem a você ter uma aplicação utilizando um virtualenv com Django 2.0 e outra aplicação utilizando um virtualenv com o Django 1.7, por exemplo.

Como utilizar no SSH KingHost?

Na KingHost para utilizar virtualenvs é bem simples, somente precisamos instalar a biblioteca com o pip, e criar o diretório onde iremos armazenar o conteúdo.

No passo a passo abaixo, iremos verificar como criar e utilizar virtualenvs.

O primeiro passo é instalarmos o virtualenv utilizando o comando pip.

Nesse primeiro passo ainda estamos utilizando o python e pip do sistema operacional, então será necessário instalar somente no caminho do nosso usuário atual.
pip install virtualenv --user

A saída da execução deve ser como a seguinte, informando ao final Successfully installed virtualenv.

Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/6a/d1/e0d142ce7b8a5c76adbfad01d853bca84c7c0240e35577498e20bc2ade7d/virtualenv-16.2.0-py2.py3-none-any.whl (1.9MB)
    100% |████████████████████████████████| 1.9MB 253kB/s 
Requirement already satisfied (use --upgrade to upgrade): setuptools>=18.0.0 in /opt/python-2.7.10/lib/python2.7/site-packages/setuptools-20.2.2-py2.7.egg (from virtualenv)
Installing collected packages: virtualenv
Successfully installed virtualenv

Agora que o instalamos, podemos gerenciar os nossos ambientes virtuais. Uma boa prática no uso de ambientes virtuais é dedicar um diretório para esse fim, no nosso caso, criaremos o diretório .virtualenvs na $HOME do usuário.

mkdir $HOME/.virtualenvs

Com o novo diretório criado, vamos criar um virtualenv dentro dele:
virtualenv $HOME/.virtualenv/meu_virtualenv
A saída da execução do comando deve algo como:

Installing Setuptools... done. Installing Pip... done.

Agora estamos prontos para iniciar o uso com o comando:

source $HOME/.virtualenv/meu_virtualenv/bin/activate

Apartir desse momento, toda a execução python que iremos realizar ficará dentro do virtualenv.
Então pacotes instalados ficarão dentro do diretório do virtualenv ($HOME/.virtualenv/lib).

virtualenv ativado

Podemos verificar o virtualenv em uso pelo nome dele no começo do prompt do seu Bash e entre parênteses.

Exemplo de instalação – flask

Com o virtualenv ativado, poderemos instalar os pacotes sem criar conflitos com outras bibliotecas do sistema.
Nesse exemplo iremos instalar somente o flask, mas você pode instalar quantas bibliotecas forem necessárias para o seu projeto.

Como estamos instalando essa dependência direto no virtualenv, não é necessário utilizar a flag –user na instalação do flask.
(meu_virtualenv)[[email protected] ~]$ pip install flask

E podemos verificar todos os pacotes instalador com o parâmetro freeze.

(meu_virtualenv)[[email protected] ~]$ pip freeze
Click==7.0
Flask==1.0.2
Jinja2==2.10
MarkupSafe==1.1.0
Werkzeug==0.14.1
itsdangerous==1.1.0

Como ativar o virtualenv no WSGI?

Na estrutura KingHost utilizamos o mod_wsgi do apache para prover a estrutura de hospedagem do python. Sendo assim, quando for preciso utilizar o virtualenv, você deve explicitamente informar no arquivo nome-da-aplicacao.wsgi localizado na pasta apps_wsgi o caminho do ambiente.

Para python3 a estrutura deve ser como a abaixo:

import sys import os 
# no ambiente kinghost o wsgi usa o ambiente de trabalho (cwd) como $HOME
HOME = os.getcwd() 
# Define o nome da aplicação, como foi criado no painel de controle   nome_app = "testflask" 
# Define o caminho do virtual env
 virtual_env = HOME + "/.virtualenv/" + nome_app 
# define o caminho da aplicação
 app_path = HOME + "/apps_wsgi/" + nome_app 
# Define o caminho do virtual env 
activate_this = virtual_env + "/bin/activate_this.py" 
# executa os imports do virtual_env
with open(activate_this) as file_: exec(file_.read(), dict(__file__=activate_this)) 
# Adiciona o caminho da aplicação ao path do ambiente sys.path.append(app_path) 
# importa a applicação como application, como é exigido pelo mod_wsgi
 from run import app as application if __name__ == "__main__": application.run()

Como sair do virtualenv?

Virtualenvs são muito úteis e auxiliam o desenvolvimento, então normalmente iremos utilizar diversos ambientes, um para cada uma das aplicações que estão em desenvolvimento.

Para sair do virtualenv atual, basta digitar o comando deactivate no terminal, com isso o sistema irá voltar a utilizar o python e pip do sistema, para ativar um novo ambiente o procedimento é o mesmo que realizamos no começo do artigo, como pode ser verificado abaixo:

(meu_virtualenv)[[email protected] ~]$ deactivate
[[email protected] ~]$ source $HOME/.virtualenvs/django_psycopg2/bin/activate

no exemplo acima, foi desativado o virtualenv meu_virtualenv e ativado o  ambiente django_psycopg2.

Como cada aplicação wsgi tem seu próprio arquivo, não existe conflito na utilização de diversas aplicações, já que os ambientes estão isolados e são instanciados de forma separada no arquivo .wsgi.

Oi! Eu sou Caue Santos e quero te convidar para assinar nossa newsletter e ficar por dentro das novidades.
Enviar conteúdo por email
3210 visualizações

Esse artigo foi útil pra você?