Gerenciando com segurança pacotes do sistema / local / project Python?

2

O contexto

Atualmente estou executando um desktop Gentoo e quero avançar para o desenvolvimento adequado do Python no meu sistema.

Eu tentei instalar alguns pacotes, a saber docker-compose , através do sistema emerge do Gentoo. Devido à confiança de docker-compose em uma versão mais antiga do módulo requests , as atualizações do meu sistema ficaram pilosas e difíceis de resolver.

Em seguida, mudei para pip e segui uma recomendação para usar o sinalizador --user para pip installs para evitar conflitos com as ferramentas / bibliotecas de todo o sistema. Eu instalei docker-compose neste nível de usuário e tudo estava bem até que eu adicionei o Pipenv ao mix para gerenciar dependências para projetos individuais. O Pipenv não gosta do sinalizador --user e, quando definido no arquivo pip.conf , se recusará a instalar dependências em seu virtualenv .

chegando ao ponto ...

Eu gostaria de uma maneira de isolar os diferentes níveis de pacotes Python que eu preciso no meu sistema. Eu gostaria de deixar as dependências do sistema no lugar como elas foram definidas pela ferramenta Gentoo emerge , ter um local para instalar ferramentas e bibliotecas que eu quero que meu usuário principal tenha acesso e, finalmente, em algum lugar que eu possa armazenar bibliotecas que eu preciso apenas para um projeto específico. Como minha máquina tem apenas um único usuário, não me preocupo muito em compartilhar as dependências de "usuário" entre usuários, mas garantir que eu possa acessá-las de qualquer diretório.

Analisei virtualenv s, mas parece que isso funciona melhor para um nível "por projeto" em vez de um nível "usuário". Pelo que posso dizer, apenas um virtualenv pode estar ativo por vez, portanto, se eu instalar uma ferramenta como docker-compose em um virtualenv sempre ativo do meu diretório inicial, mude para um novo virtualenv para Em um projeto, perderei o acesso à ferramenta docker-compose e a qualquer outra coisa que eu tenha instalado no nível "usuário" virtualenv .

Em suma, quais opções eu tenho para gerenciar diferentes "níveis" de dependências Python? Quais são as melhores práticas para garantir que eu não trilhe minhas dependências de sistema de um nível de usuário e minhas dependências de usuário de um nível de projeto? O que vocês fazem para isolar com segurança esses diferentes níveis, se você fizer isso de alguma forma?

Esta é minha primeira postagem no stackexchange, então, por favor, deixe-me saber se eu posso esclarecer ou melhorar esta questão. Eu tentei fazer uma pesquisa de antemão, mas sinto como se tivesse acabado.

    
por Matt Mazzanti 07.08.2018 / 23:17

0 respostas