Como executar easy_install e pip sem raiz, sem virtualenv?

2

As pessoas têm acesso a servidores como usuários normais (na verdade encarcerados), e são aconselhados - no momento - a fazer o download de quaisquer pacotes python que precisarem, setup.py build deles e adicionar sua localização a sys.path .

Sem virutalenv, existe uma maneira de fazer easy_install e pip instalar pacotes em um diretório (em $PYTHONPATH ) dentro de ~ ?

Como alternativa, você pode configurar um virtualenv que esteja sempre ativo para um determinado usuário, tanto no shell como no repsect para o Apache e o mod_wsgi?

Em suma, como você pode resolver melhor o problema de permissões na instalação de pacotes de sites?

    
por Stefano Palazzo 15.02.2012 / 18:09

1 resposta

1

Para obter virtualenv disponível no shell automaticamente, você deve criar seu script bin/activate toda vez que o usuário efetuar login. Você pode fazer isso junto com a criação do ambiente virtualenv padrão quando o usuário é criado. Ou você pode simplesmente adicionar o caminho para o interpretador python do virtualenv para a variável $PATH , diretamente no usuário .bash_login , .zshrc ou qualquer outra coisa.

Virtualenv, quando ativado, modifica duas variáveis de ambiente. Primeiro, ele adicionará {virtualenv}/bin ao seu $PATH e, segundo, definirá $VIRTUAL_ENV da variável informando onde exatamente o virtualenv está configurado. Então você pode tentar imitar seu comportamento no Apache definindo essas variáveis. No final, você deve usar o intérprete python do virtualenv baixado com o virtualenv que tem todos os caminhos necessários configurados.

mod_wsgi em sua mão tem algumas opções de configuração que podem ajudá-lo com isso. Deve ser suficiente usar WSGIPythonPath . Você também pode usar WSGIPythonEggs .

No entanto, observe que você deve proteger a configuração inicial de ser modificada pelo usuário, mas acessível pelo usuário que está executando o apache.

    
por 22.03.2012 / 08:41