Python/Ambiente Virtual
Contexto
Por motivos históricos os mecanismos de instalação de pacotes em Python são complicados, em parte devido à existência de várias alternativas usando componente mais ou menos concorrentes, complementares e mais ou menos (in)compatíveis.
Essa confusão se reflete também na questão dos ambientes virtuais para você isolar versões diferentes de Python com versões também diferentes de pacotes de bibliotecas, porque tudo isso depende e influi no mecanismo de instalação de pacotes.
A boa notícia é que a partir do Python 3.4 (beta em nov/2014), as coisas melhoraram muito, porque o instalador de pacotes pip finalmente fará parte da distribuição padrão de Python.
Se quiserem saber os detalhes sórdidos da situação atual, podem ler o PEP 453, onde os problemas tradicionais são apresentados em detalhes, juntamente com a solução adotada para o Python 3.4 (ver referências ao final).
Python 3.4
Não precisa ser superusuário, melhor fazer tudo isso com seu usuário normal. Esse procedimento funciona nos *nix, no Windows vai ser diferente mas não tenho como testar neste momento:
1) criar ambiente
$ python3 -m venv meu_venv
2) ativar ambiente (note que depois de ativado o ambiente, o prompt passa a incluir o nome do ambiente entre parêntesis):
$ source meu_venv/bin/activate (meu_venv) $
3) use o pip para instalar pacotes no ambiente criado
Python 3.3
Criar ambiente virtual com venv e pip
Não precisa ser superusuário, melhor fazer tudo isso com seu usuário normal. Esse procedimento funciona nos *nix, no Windows vai ser diferente mas não tenho como testar neste momento:
1) criar ambiente
$ python3 -m venv meu_venv
2) ativar ambiente (note que depois de ativado o ambiente, o prompt passa a incluir o nome do ambiente entre parêntesis):
$ source meu_venv/bin/activate (meu_venv) $
3) baixar e instalar o setuptools usando o Python do ambiente ativado:
(meu_venv) $ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py (meu_venv) $ python ez_setup.py
4) baixar e instalar o pip usando o Python do ambiente ativado:
(meu_venv) $ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py (meu_venv) $ sudo pythonX get-pip.py
5) verificar que o pip foi instalado corretamente no ambiente (a segunda linha é o resultado do comando pip --version):
(meu_venv) luciano@lemingo ~/prj/venv-tests $ pip --version pip 1.4.1 from /var/prj/venv-tests/meu_venv/lib/python3.3/site-packages (python 3.3)
Python 2.6, 2.7, 3.1, 3.2
Instalar pip no sistema
O instalador de pacotes pip depende de uma biblioteca chamada setuptools.
Em um sistema *nix, os passos abaixo devem ser suficientes para instalar o pip. No Windows, em geral não se
1) Instalar a biblioteca setuptools no sistema (necessário privilégios de administrador)
1.1) Baixar o script ez_setup.py, que instala setuptools:
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
1.2) Executar o ex_setup, como super usuário e usando o Python X desejado (X="2" ou X="3"; default X="" equivale a "2" na maioria dos sistemas):
$ sudo pythonX ez_setup.py
2) Instalar o utilitário pip.
2.1) Baixar o script get-pip.py:
$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
2.2) Executar o get-pip.py, como super usuário e usando o Python X desejado:
$ sudo pythonX get-pip.py
2.3) Verificar a versão do pip que foi instalada (no meu caso, usei o Python 3 no Linux Mint 15 e o resultado foi esse):
$ pip --version pip 1.4.1 from /usr/local/lib/python3.3/dist-packages (python 3.3)
Instalar virtualenv no sistema
1) Instalar o pip no sistema (passos 1.1 a 2.2 acima).
- ATENÇÃO
- Note que só pode haver um pip no sistema, se você instalar o pip com Python 2 e depois com Python 3, a segunda instalação vai sobrescrever a primeira. Na prática, o mais comum hoje é instalar apenas o pip para o Python 2, que nos sistemas *nix já vem instalado, e para Python 3 instalar apenas o pip dentro do venv.
2) Verificar a versão do pip que foi instalada (no meu caso, quando usei o Python 2 no Linux Mint 15 e o resultado foi esse):
$ pip --version pip 1.4.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
3) Instalar o virtualenv no sistema, usando o pip do sistema (necessário privilégios de administrador). No comando abaixo, a opção --upgrade serve para atualizar uma eventual instalação anterior do virtualenv. Se você nunca instalou o virtualenv, não precisa desta opção, mas (creio que) ela não atrapalha se você não tem um virtualenv instalado.
$ sudo pip install --upgrade virtualenv
Referências
- PEP 453 -- Explicit bootstrapping of pip in Python installations
- http://www.python.org/dev/peps/pep-0453/
- Instruções originais para instalação do PIP
- http://www.pip-installer.org/en/latest/installing.html