Qual é o local correto para um serviço virtualenv mantido?

4

Estarei instalando e mantendo um aplicativo de servidor baseado no Python 2.7 no servidor Ubuntu (12.04). O modelo de manutenção será criar um virtualenv e instalar bibliotecas padrão de aplicativos (do PyPI) e bibliotecas personalizadas (sob medida), atualizando-as conforme necessário. Uma pasta separada contém o "aplicativo", que é composto de arquivos de configuração e arquivos Python específicos do aplicativo.

Tanto quanto eu posso dizer, os únicos pacotes fornecidos pelo Ubuntu que eu preciso são python e python-virtualenv . Eu posso fazer uma instalação personalizada de pew para gerenciar o venv - nesse caso eu vou sudo easy_install pew e aceito que onde quer que seja goes está correto (o banco não está no repositório 12.04).

Tenho uma percepção vaga de que os aplicativos devem estar em /opt ou /srv ou em algum lugar desse tipo e que um aplicativo de servidor pode estar em um local diferente de um aplicativo de usuário. Dê tudo isso:

  • onde o virtualenv deve estar localizado?
  • onde a pasta de aplicativos do servidor deve estar localizada?
por d3vid 14.02.2014 / 13:23

2 respostas

1

Para aplicativos Django, Adam Bard recomenda localizar seu virtualenv em /opt/apps/<appname>-env e seu aplicativo em /opt/apps/<appname>-env/site . (Muito obrigado a don.joey pelo excelente link.)

Ligeiramente não relacionado, eu também encontrei os Anti-padrões de Implantação do Python de Hynek Schlawack e Implementação do aplicativo Python com pacotes nativos para ser útil.

Com base nisso, minha própria análise do Padrão de hierarquia do sistema de arquivos e uma inspeção da pasta /opt no meu máquina de mesa, eu fui com:

  • /opt/virtualenv/<env_name> para o ambiente virtual
  • /opt/<vendor_name>/<app_name> para a pasta de aplicativos do servidor

Isso me permite criar vários virtualenvs independentes e pastas de aplicativos para diferentes aplicativos, versões, etc., conforme entender.

    
por d3vid 26.03.2014 / 15:57
1

Essencialmente, a localização do virtualenv é irrelevante. Você pode colocá-lo onde quiser. Você só precisa executar source some_venv/bin/activate e, em seguida, está pronto para ir.

A localização tradicional é ~ / .virtualenvs.

Eu uso uma configuração diferente, onde eu tenho uma pasta ~ / projects que contém os diferentes virtualenvs e contém o código python para diferentes projetos. Isso é legal e fácil porque você tem tudo junto. Para alguns, pode parecer um pouco confuso, porque você obtém um bin, local e mais pastas no seu veiculo.

Eu gerencio estes usando virtualenvwrapper que está nos repositórios. Eu não tive a chance de testar o banco, ainda.

Se virtualenvwrapper e virtualenv estiverem configurados corretamente, o fluxo de trabalho é:

mkvirtualenv some_venv
workon some_venv
cdvirtualenv
deactivate
    
por don.joey 14.02.2014 / 13:49