Como usar o virtualenv?

0

Hoje vi um exemplo de como o comando virtualenv é usado. Foram os quatro comandos seguintes:

virtualenv /tmp/vetest
source /tmp/vetest/bin/activate
pip install ipython-notebook
deactivate

O primeiro comando cria o diretório /tmp/vetest/ , no qual há quatro subdiretórios: lib , include , local , bin .

Em seguida, usamos source . O que isso faz? Tanto quanto eu entendo isso me coloca em um ambiente virtual. Estar lá me permite instalar coisas diferentes (não posso fazer de outra forma, pois não tenho permissões de root).

Com a desativação, deixo o ambiente virtual. Isso é o que eu entendo até agora.

Poucas perguntas permanecem obscuras para mim. O que esse comando tem a ver com o Python? Este comando é um "padrão" para sistemas Unix? O virtualenv faz algo mais que apenas criar novos diretórios? O que é o diretório /tmp/ ?

    
por Roman 05.07.2013 / 18:37

1 resposta

2

Surpreendentemente, pesquisando " virtualenv " leva você até o virtualenv documentation . Se você quiser usá-lo, sugiro pelo menos uma leitura rápida.

Como o nome sugere, virtualenv é uma ferramenta para criar ambientes isolados ou "virtuais" para o Python. Ele permite que você configure várias instâncias independentes para diferentes projetos, cada um com seus próprios módulos e até versões do Python. Isso é útil em uma variedade de circunstâncias, principalmente quando você não tem acesso de administrador e deseja instalar módulos Python. Dos documentos:

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

Então você tem isso. lib/ é onde os módulos vivem. include/ é para cabeçalhos e outras coisas compartilhadas. local/ é para coisas que vivem fora dos principais site-packages'' (in lib / ) module home, like your own applications. And finally, bin / 'é onde os executáveis vivem.

O diretório /tmp é, assim como parece, um diretório temporário - usado para armazenar as coisas temporariamente. Dependendo do sistema, eles podem ou não ser removidos periodicamente ou quando o sistema é reinicializado. Ou não, isso depende. Seu primeiro comando criou um subdiretório de /tmp chamado vetest/ .

Seu segundo comando, source , basicamente significa "executar os comandos listados neste arquivo". É um comando interno, parte do shell. O resultado desse comando é iniciar o ambiente virtual. Agora você deve ver (venv) prefixado em seu prompt de shell.

Uma vez lá dentro, você usou o Programa Instalador do Python, ou pip , que é incluído automaticamente em todos os virtualenv. pip se comunica com o Índice de pacotes Python ou com o PyPI . Essa é a coisa mais próxima que a comunidade Python tem de um repositório central, semelhante ao CPAN ou do Ruby rubygems.org . No seu caso, pip estava procurando o módulo ipython-notebook , que infelizmente não existe (o bloco de anotações faz parte do núcleo do IPython instalação). Se você tivesse executado pip install ipython , teria conseguido algo nos seguintes termos:

Downloading/unpacking ipython
  Downloading ipython-0.13.2.zip (6.4MB): 6.4MB downloaded
  Running setup.py egg_info for package ipython

Installing collected packages: ipython
  Running setup.py install for ipython

    Installing ipcluster3 script to /tmp/vetest/bin
    Installing irunner3 script to /tmp/vetest/bin
    Installing ipcontroller3 script to /tmp/vetest/bin
    Installing iptest3 script to /tmp/vetest/bin
    Installing pycolor3 script to /tmp/vetest/bin
    Installing iplogger3 script to /tmp/vetest/bin
    Installing ipengine3 script to /tmp/vetest/bin
    Installing ipython3 script to /tmp/vetest/bin

Successfully installed ipython
Cleaning up...

A partir de /tmp/vetest , agora você pode digitar ipython3 notebook (supondo que você tenha o Python 3, que você deve usar de qualquer maneira) para iniciar o servidor do IPython Notebook e uma sessão no navegador. Infelizmente, ele falhará porque você não tem muitas dependências como tornado , mas elas são facilmente instaladas usando pip . Uma lista de dependências básicas está disponível no site do IPython. Funcionalidades adicionais, como pylab , exigem NumPy , SciPy e matplotlib .

Por fim, o comando deactivate sai da sua sessão virtualenv .

    
por 06.07.2013 / 01:11