如何使用Python的pip下载并保留打包的压缩文件?


104

如果我想使用pip命令下载软件包(及其依赖项),但保留所有已下载的压缩文件(例如django-socialregistration.tar.gz)-有没有办法做到这一点?

我尝试了各种命令行选项,但是它似乎总是解压缩并删除 zipfile-或获取zipfile,但适用于原始程序包,而不适用于依赖项。

Answers:


77

pip install --download不推荐使用。从8.0.0版本开始,您应该使用以下pip download命令:

 pip download <package-name>

3
以及以后如何安装下载的软件包?
knocte

1
这是最新的答案。谢谢
KJ50 '16

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

5
几天前尝试过,但我认为它仍然尝试从互联网上检索部门,而不是使用下载的部门;IIRC,我不得不使用sudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte

3
请注意,它pip download也支持,-r requirements.txt因此您可以轻松地从联网计算机上下载所有文件,然后复制到离线计算机上,并安装上述评论者的方式
Hawkins

113

--download-cache选项应执行您想要的操作:

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

但是,当我对此进行测试时,主程序包可以正常下载,保存和安装,但是依赖项以其完整的URL路径作为名称保存-有点烦人,但是所有tar.gz文件都在那里。

--download选件下载主软件包及其依赖项,并且不安装其中的任何一个。(请注意版本1.1之前的版本--download选项下载依赖项。)

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

pip文档概述了--download用于快速和本地安装的方法


5
很好,的确确实有效-尽管我标记了一个--no-install选项。而且您对时髦的文件名是正确的,但至少文件在那里
约翰C

上次我检查时,--download选项下载具有相关性的软件包。
Mohammad Niknam

3
--download-cache已弃用。使用pip install --download <dir> <pkg>
ostler.c 2015年

18
pip install --download现在已弃用,并将从pip 10中删除。pip.pypa.io/en/latest/reference/pip_download/#overview。使用pip download somepackage
2015年

17
具体来说,新的等效项是pip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza '16

56

我总是这样做来下载软件包:

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

要么

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

当我想安装所有我刚刚下载的库时,我这样做:

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

要么

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


更新资料

另外,要在一个系统上安装所有软件包,可以将它们全部导出到requirement.txt将用于在另一个系统上安装的软件包,我们这样做:

pip freeze > requirement.txt

然后,requirement.txt可以像上面一样使用进行下载,或通过以下步骤进行安装requirement.txt

pip install -r requirement.txt

参考:pip安装程序


6

在版本7.1.2中,pip使用以下命令下载包的轮子(如果有):

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

以下下载源分发:

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

如果pip知道依赖项(例如,如果pip show package列出了依赖项),它们也会下载依赖项。


更新资料

正如指出的安东Khodakpip download命令已经从版本8在上述例子中优选的,这意味着/path/to/downloaded/file与选项给出需要-d,所以更换installdownload作品。


我必须在Windows中进行开发,并在没有互联网连接的情况下在RH7上进行部署。因此,我使用--no-binary:all:下载了源软件包。但是,这在收集django-pyodbc-azure == 2.0.4.1时失败,因为此软件包没有源。有没有办法下载源代码,或者如果不存在,可以下载weehl?
窃窃私语者'18

6

使用pip download <package1 package2 package n>下载所有的软件包,包括依赖性

使用pip install --no-index --find-links . <package1 package2 package n>安装所有的软件包,包括依赖性。它从中获取所有文件CWD。它不会下载任何东西


2

pip wheel 是您应该考虑的另一种选择:

pip wheel mypackage -w .\outputdir

它将把软件包及其依赖项下载到一个目录(默认为当前工作目录),但是它将执行将所有源软件包转换为wheel的附加步骤。

它方便地支持需求文件:

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

--no-deps如果只需要特别要求的软件包,请添加参数:

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

0

我希望(RHEL)- pip download package==version --no-deps --no-binary=:all:


-1

离线安装python软件包

对于窗户用户:

要将其下载到文件中,请打开您的cmd并遵循以下步骤:

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

pip download <*package name*>

软件包和依赖项将下载到当前工作目录中。

安装当前工作目录:

将您下载的文件夹设置为cwd,然后执行以下操作:

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

这将在该位置搜索依赖项。


如果您未指定平台,它将下载当前操作系统的文件。因此,如果您将下载的文件安装在其他操作系统上,则无法使用
Prometheus,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.