Eu tenho um pacote externo que quero instalar em meu python virtualenv de um arquivo tar. Qual é a melhor maneira de instalar o pacote?
Eu descobri 2 maneiras de fazer isso:
- Extraia o arquivo tar e execute
python setup.py install
dentro do diretório extraído. pip install packagename.tar.gz
do exemplo nº 7 em https://pip.pypa.io/en/stable/reference/pip_install/#examples
É se há alguma diferença em fazê-los dessas 2 maneiras.
python
virtualenv
pip
setup.py
user2125465
fonte
fonte
pip
. Você pode desinstalar pacotes com ele.sdist
?yum
.Respostas:
Superficialmente, ambos fazem a mesma coisa: fazer
python setup.py install
oupip install <PACKAGE-NAME>
instalarão seu pacote python para você, com um mínimo de confusão.No entanto, o uso do pip oferece algumas vantagens adicionais que o tornam muito mais agradável de usar.
setup.py
, muitas vezes terá que pesquisar manualmente e fazer download das dependências, o que é tedioso e pode se tornar frustrante.pip uninstall <PACKAGE-NAME>
epip install --upgrade <PACKAGE-NAME>
. Em contraste, se você instalar um pacote usandosetup.py
, terá que excluir manualmente e manter um pacote manualmente se quiser se livrar dele, o que pode ser potencialmente sujeito a erros.setup.py
, terá que visitar o site da biblioteca, descobrir onde fazer o download, extrair o arquivo, executarsetup.py
... Em contraste, o pip irá pesquisar automaticamente o índice de pacotes Python (PyPi) para ver se o pacote existe lá, e irá baixar, extrair e instalar automaticamente o pacote para você. Com algumas exceções, quase todas as bibliotecas Python genuinamente úteis podem ser encontradas no PyPi.virtualenv
, que é um programa que permite executar vários projetos que requerem bibliotecas conflitantes e versões de Python em seu computador. Mais informações .Então, basicamente, use pip. Ele apenas oferece melhorias em relação ao uso
python setup.py install
.Se você estiver usando uma versão mais antiga do Python, não puder fazer upgrade e não tiver o pip instalado, poderá encontrar mais informações sobre a instalação do pip nos seguintes links:
pip, por si só, realmente não requer um tutorial. 90% do tempo, o único comando que você realmente precisa é
pip install <PACKAGE-NAME>
. Dito isso, se você estiver interessado em aprender mais sobre os detalhes do que exatamente você pode fazer com o pip, consulte:Também é comumente recomendado que você use pip e virtualenv juntos. Se você é um iniciante em Python, pessoalmente acho que seria bom começar apenas usando pip e instalar pacotes globalmente, mas, eventualmente, acho que você deve fazer a transição para o virtualenv ao lidar com projetos mais sérios.
Se quiser saber mais sobre como usar pip e virtualenv juntos, consulte:
fonte
python setup.py install
também baixa e instala dependências. Isso é uma mudança desde que você escreveu esta resposta em 2013?python setup.py install
é o análogo do make install: é uma maneira limitada de compilar e copiar arquivos para diretórios de destino. Isso não significa que seja a melhor maneira de realmente instalar software em seu sistema.pip
é um gerenciador de pacotes, que pode instalar, atualizar, listar e desinstalar pacotes, como gerenciadores de pacotes familiares, incluindo:dpkg, apt, yum, urpmi, ports
etc. Nos bastidores, ele será executadopython setup.py install
, mas com opções específicas para controlar como e onde as coisas acabam sendo instaladas.Em resumo: use
pip
.fonte
A questão é sobre o método preferido para instalar um tarball local contendo um pacote python, NÃO sobre a vantagem de enviar o pacote para um serviço de indexação como o PyPi.
Pelo que eu não sei, algum distribuidor de software não faz upload de seu pacote para o PyPi, em vez de pedir aos desenvolvedores que baixem o pacote de seu site e instalem.
Isso pode funcionar, mas não é recomendado. Não é necessário desembrulhar o arquivo tarball e acessá-lo para executar o arquivo setup.py.
Esta é a forma desenhada e preferida. Conciso e alinhado com pacotes de estilo PyPi.
Mais informações sobre
pip install
podem ser encontradas aqui: https://pip.readthedocs.io/en/stable/reference/pip_install/fonte