Como usar o pip do Python para baixar e manter os arquivos compactados de um pacote?


105

Se eu quiser usar o pipcomando para baixar um pacote (e suas dependências), mas manter todos os arquivos compactados que foram baixados (digamos, django-socialregistration.tar.gz) - há uma maneira de fazer isso?

Tentei várias opções de linha de comando, mas sempre parece descompactar e excluir o arquivo zip - ou obtém o arquivo zip, mas apenas para o pacote original, não as dependências.

Respostas:


78

pip install --downloadestá obsoleto. A partir da versão 8.0.0, você deve usar o pip downloadcomando:

 pip download <package-name>

3
e como instalar os pacotes baixados mais tarde?
Knocte

2
Esta é a resposta mais atualizada. Obrigado
KJ50

3
@knoctepip install path-to-downloaded-package
Anton Khodak

5
tentei isso há alguns dias e acho que ainda tentei recuperar os deps da internet em vez de usar os baixados; IIRC, tive de usarsudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte

3
Observe que pip downloadtambém oferece suporte -r requirements.txtpara que você possa baixar facilmente todos eles de uma máquina conectada à Internet e, em seguida, copiá-los para uma máquina offline e instalar como os comentaristas acima mencionaram
Hawkins

113

A --download-cacheopção deve fazer o que você quiser:

pip install --download-cache="/pth/to/downloaded/files" package

No entanto, quando testei isso, o pacote principal foi baixado, salvo e instalado ok, mas as dependências foram salvas com seu caminho de url completo como o nome - um pouco chato, mas todos os tar.gzarquivos estavam lá.

A --downloadopção baixa o pacote principal e suas dependências e não instala nenhum deles. ( Observe que antes da versão 1.1, a --downloadopção não baixava dependências.)

pip install package --download="/pth/to/downloaded/files"

A pipdocumentação descreve o uso --downloadpara instalações rápidas e locais .


5
Legal, realmente funcionou - embora eu tenha marcado uma --no-installopção como ativada. E você está certo sobre os nomes de arquivo funky, mas pelo menos os arquivos estão .
John C

da última vez que verifiquei, --downloadopção baixar o pacote com dependências.
Mohammad Niknam

3
--download-cache está obsoleto. use pip install --download <dir> <pkg>
ostler.c

18
pip install --downloadagora está obsoleto e será removido do pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Use pip download somepackage.
Sнаđошƒаӽ

17
Especificamente, o novo equivalente épip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza

56

Sempre faço isso para baixar os pacotes:

pip install --download /path/to/download/to_packagename

OU

pip install --download=/path/to/packages/downloaded -r requirements.txt

E quando quero instalar todas as bibliotecas que acabei de baixar, faço o seguinte:

pip install --no-index --find-links="/path/to/downloaded/dependencies" packagename

OU

pip install --no-index --find-links="/path/to/downloaded/packages" -r requirements.txt


Atualizar

Além disso, para ter todos os pacotes instalados em um sistema, você pode exportá-los todos para requirement.txtque serão usados ​​para instalá-los em outro sistema, nós fazemos isso:

pip freeze > requirement.txt

Em seguida, o requirement.txtpode ser usado como acima para download ou faça isso para instalá-los a partir de requirement.txt:

pip install -r requirement.txt

REFERÊNCIA: instalador pip


6

Na versão 7.1.2, pip baixa a roda de um pacote (se disponível) com o seguinte:

pip install package -d /path/to/downloaded/file

O seguinte baixa uma distribuição de origem:

pip install package -d /path/to/downloaded/file --no-binary :all:

Eles também baixam as dependências, se pip estiver ciente delas (por exemplo, se as pip show packagelistar).


Atualizar

Conforme observado por Anton Khodak , o pip downloadcomando é preferido desde a versão 8. Nos exemplos acima, isso significa que /path/to/downloaded/fileprecisa ser fornecido com opção -d, portanto, a substituição installpor downloadfunciona.


Tenho que desenvolver em windows e implantar em RH7 sem nenhuma conexão com a internet. Então, eu baixei os pacotes de origem com --no-binary: all:. No entanto, isso falha ao coletar django-pyodbc-azure == 2.0.4.1, pois este pacote não tem fonte. Existe uma maneira de baixar o código-fonte ou se não existir, baixar o weehl?
cwhisperer

6

Use pip download <package1 package2 package n>para baixar todos os pacotes incluindo dependências

Use pip install --no-index --find-links . <package1 package2 package n>para instalar todos os pacotes, incluindo dependências. Ele obtém todos os arquivos de CWD. Não vai baixar nada


2

pip wheel é outra opção que você deve considerar:

pip wheel mypackage -w .\outputdir

Ele irá baixar pacotes e suas dependências para um diretório (diretório de trabalho atual por padrão), mas executa a etapa adicional de conversão de quaisquer pacotes de origem em rodas.

Suporta convenientemente os arquivos de requisitos:

pip wheel -r requirements.txt -w .\outputdir

Adicione o --no-depsargumento se desejar apenas os pacotes especificamente solicitados:

pip wheel mypackage -w .\outputdir --no-deps

0

Eu preferiria (RHEL) - pip download package==version --no-deps --no-binary=:all:


-1

instalar pacotes python offline

Para usuários do Windows :

Para fazer o download em um arquivo, abra seu cmd e siga isto:

cd <*the file-path where you want to save it*>

pip download <*package name*>

o pacote e as dependências serão baixados no diretório de trabalho atual.

Para instalar a partir do diretório de trabalho atual:

defina sua pasta onde você baixou como o cwd e siga estes:

pip install <*the package name which is downloded as .whl*> --no-index --find-links <*the file locaation where the files are downloaded*>

isso pesquisará dependências nesse local.


se você não especificar a plataforma, ele baixará os arquivos do sistema operacional atual. Portanto, isso não funcionará se você instalar os arquivos baixados em outro sistema operacional
Prometheus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.