easy_install / pip ou apt-get

30

Conforme observado na página wiki do Ubuntu no Rails , é recomendável que o gems gerencie suas dependências do Rails / Ruby.

Qual é a melhor prática com pacotes Python como o Django? Devo instalá-los através do apt-get ou devo deixar o easy_install / pip buscá-los no PyPi?

Leonard Ehrenfried
fonte

Respostas:

29

Existem vários argumentos:

  1. Use Repositórios / PPAs, pois eles manterão você estável e atualizado com as correções de segurança.

    Isto é principalmente verdade. Se, por exemplo, você instala python-djangocomo eu, obtém atualizações de segurança. Isso é bom porque você só precisa manter o controle do apt, mas ainda precisa testar as coisas antes de enviar atualizações (embora o teste deva ser bom todas as vezes).

    Você poderia argumentar que, se você usasse pip, nunca poderia procurar atualizações.

  2. Use pippara que você possa usar as versões "estáveis" apropriadas.

    Não há dúvida sobre isso: os repositórios ficam para trás no mundo real. O Django é 2.0, mas os repositórios para a versão LTS do Ubuntu (que muitas pessoas aderem aos servidores), você só recebe 1.8 no Ubuntu 16.4 lts com Python 2, mas ainda recebe atualizações de segurança.

    pipfornece as últimas informações o tempo todo. Você só precisa atualizá-los.

  3. Atualizar uma instalação Python reutilizada pode ser um pesadelo

    Quando você faz o upgrade distinto do Ubuntu para a próxima versão, ele atualiza muitos pacotes. Muitas coisas mudam. Eu sei que no Django isso significa que você deve tomar cuidado com incompatibilidades de código, descontinuações ... Mas o mesmo se aplica a todos os outros códigos Python.

    O mesmo vale para você, pipmas pipvocê pode fazer uma coisa de cada vez. Você sabe o que causa os problemas e sabe onde procurar a solução.

  4. pip+ virtualenvpermite que você mantenha as coisas separadas

    virtualenvpermite que você tenha pequenos ambientes Python portáteis. Isso permite que você tenha vários ambientes Python diferentes executando juntos na mesma máquina.

    O benefício óbvio parece ser a manutenção, pois você pode gerenciar o ambiente da mesma maneira que gerencia o código. Mesmo armazene o ambiente no VCS também ... mas você deve se lembrar que ter doze virtualenvs diferentes significa doze ambientes que você precisa verificar e atualizar.


Edit: Após uma série horrível de atualizações em um servidor para obtê-lo do Lucid para o Precise, eu mudei de uma combinação Apt + pip (nr 1 e 2) para uma situação pura pip + virtualenv (nr. 4). Em vez de ter um virtualenv por site, eu tenho um compartilhado entre uma dúzia de sites. Isso está funcionando por enquanto.

Eu também tive que escrever um pequeno script que verifica o status dos pacotes instalados com o pip. Se houver atualizações, preciso aplicá-las manualmente (o que é bom porque eu as testo localmente, em um virtualenv local). Tudo isso ainda é um pouco mais doloroso do que era originalmente, mas muito melhor a longo prazo.

Oli
fonte
10
  • Pacotes dos repositórios

    Eles devem ser instalados sempre que seu aplicativo for específico para o Ubuntu . Eles garantem a você uma versão estável que você pode instalar nas máquinas Ubuntu, elas são suportadas e, às vezes, mais maduras do que as que você obtém via pip. Se você implantar vários servidores ubuntu, ou se estiver escrevendo um aplicativo Ubuntu, use-os, se disponíveis .

    Às vezes, eles também contêm modificações específicas do Ubuntu.

  • pip vs easy_install

    Não há muito a dizer sobre isso, como o hacker do Django James Bennett disse:

    Por favor, pelo amor de Guido, pare de usar setuptools e easy_install, e use distutils e pip.

    Para uma discussão aprofundada sobre as diferenças, consulte Em embalagens de James Bennett (do django) e Algumas correções em “Sobre embalagens” de Ian Bicking (do mozilla).

Se você quer estar seguro, experimente as implantações de pip usando o virtualenv . Isso fornece um ambiente python isolado, para que você possa ter certeza de que seu aplicativo será executado em qualquer máquina.

Espere um pouco, porém, acredito que algumas pessoas discordarão de mim.

Stefano Palazzo
fonte