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.

John C
fonte

Respostas:

78

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

 pip download <package-name>
Anton Khodak
fonte
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 .

Mark Gemmill
fonte
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

curva segura
fonte
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.

jasaarim
fonte
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

Siva Kranthi Kumar
fonte
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
jpmc26
fonte
0

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

Santosh K
fonte
-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.

Joseph Puthumana
fonte
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