Que é o mais pitônico: instalando módulos Python através de um gerenciador de pacotes (Macports, APT) ou via pip/easy_install/setupTools

StackOverflow https://stackoverflow.com/questions/1559372

Pergunta

Normalmente, costumo instalar as coisas através do gerenciador de pacotes, para coisas Unixy. No entanto, quando eu programei muito Perl, eu usaria o CPAN, versões mais recentes e tudo mais.

Em geral, eu costumava instalar coisas do sistema via gerenciador de pacotes e coisas de idioma por meio de seu próprio gerenciador de pacotes (gem/easy_install | pip/cpan)

Agora, usando o Python principalmente, estou me perguntando o que é a melhor prática?

Foi útil?

Solução

A versão Python do sistema e suas bibliotecas são frequentemente usadas por software na distribuição. Desde que o software que você esteja usando fique feliz com as mesmas versões do Python e todas as bibliotecas que sua distribuição, do que o uso dos pacotes de distribuição funcionará muito bem.

No entanto, muitas vezes você precisa da versão de desenvolvimento dos pacotes, ou versões mais recentes ou versões mais antigas. E então não funciona mais.

Portanto, geralmente é recomendado para instalar sua própria versão python que você usa para o desenvolvimento e criar ambientes de desenvolvimento com Buildout ou virtualenv ou ambos, para isolar o Python do sistema e o ambiente de desenvolvimento um do outro.

Outras dicas

Existem dois campos completamente opostos: um a favor dos pacotes fornecidos pelo sistema e um a favor da instalação separada. Estou pessoalmente no acampamento "System Packages". Vou fornecer argumentos de cada lado abaixo.

Pacotes Pro System: O System Packager já se importa com a dependência e a conformidade com as políticas gerais do sistema (como o layout do arquivo). Os pacotes do sistema fornecem atualizações de segurança enquanto ainda se preocupam em não quebrar a compatibilidade - então, às vezes, eles fazem o backport de segurança que os autores a montante não fizeram o backport. Os pacotes do sistema são "seguros" wrt. Atualizações do sistema: Após uma atualização do sistema, você provavelmente também tem uma nova versão do Python, mas todos os seus módulos Python ainda estão lá se eles vieram de um empacotador de sistema. Isso é tudo experiência pessoal com Debian.

Pacotes do Sistema Con: Nem todo o software pode ser fornecido como um pacote de sistema, ou não na versão mais recente; Instalar as coisas no sistema pode quebrar os pacotes do sistema. As atualizações podem quebrar seu aplicativo.

Instalação Pro separada: Algumas pessoas (em particular os desenvolvedores de aplicativos da Web) argumentam que você precisa absolutamente de uma configuração repetível, com apenas os pacotes que deseja e completamente dissociada do System Python. Isso vai além dos pacotes auto-instalados vs. do sistema, pois mesmo para o auto-instalação, você ainda pode modificar o Python do sistema; Com a instalação separada, você não fará. Como Lennart discute, agora existem cadeias de ferramentas dedicadas para apoiar essa configuração. As pessoas argumentam que apenas essa abordagem pode garantir resultados repetíveis.

Contrato de instalação separada: você precisa lidar com as correções de bugs e precisa garantir que todos os seus usuários usem a instalação separada. No caso de aplicativos da Web, este último é normalmente fácil de alcançar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top