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

问题描述 投票:0回答:9

如果我想使用

pip
命令下载包(及其依赖项),但是 keep 所有下载的压缩文件(例如 django-socialregistration.tar.gz) - 有没有办法这样做吗?

我尝试过各种命令行选项,但它似乎总是解压并删除zip文件 - 或者它获取zip文件,但用于原始包,而不是依赖项。

python download pip zip
9个回答
153
投票

pip install --download
已弃用。从版本 8.0.0 开始,您应该使用
pip download
命令:

 pip download <package-name>

122
投票

--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
进行快速和本地安装


73
投票

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

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 安装程序


16
投票

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

pip wheel mypackage -w .\outputdir

它将下载包及其依赖项到一个目录(默认情况下为当前工作目录),但它执行将任何源包转换为轮子的附加步骤。

它方便地支持需求文件:

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

如果您只想要特别请求的包,请添加

--no-deps
参数:

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

11
投票

使用

pip download <package1 package2 package n>
下载所有包,包括依赖项

使用

pip install --no-index --find-links . <package1 package2 package n>
安装所有包(包括依赖项)。 它从
CWD
获取所有文件。 它不会下载任何东西


9
投票

在版本 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
列出了它们),它们也会下载依赖项。


更新

正如 Anton Khodak 所指出的,从版本 8 开始,

pip download
命令是首选。在上面的示例中,这意味着
/path/to/downloaded/file
需要与选项
-d
一起给出,因此用
install
替换
download
是可行的。


5
投票

离线安装Python包

对于 windows 用户:

下载到文件中 打开你的 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*>

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


3
投票

本线程中提到的所有答案都假设软件包将在与必须安装的目标操作系统相同的操作系统配置上下载。

根据我个人的经验,我使用 Windows 作为我的工作机器,并且必须下载 Linux 环境的软件包,并且看到人们也这样做,反之亦然。我做了一些广泛的谷歌搜索,发现了

sodim.dev

我所要做的就是上传requirements.txt文件并选择环境配置,如操作系统和python版本,它会给出一个带有下载网址、源代码网址等的csv

我猜想在后端,这个应用程序会根据要求启动操作系统虚拟机并安装特定的 python 版本,然后生成报告,因为 30-50 个包确实需要大约 15-20 分钟。

P.S.:我在离线环境中工作,安全性非常高,下载包也不是那么频繁。我们将源代码列入白名单并为每个单独的请求下载网址,然后在运行一些应用程序安全工具后,我们批准/拒绝要下载的源代码。


0
投票

我更喜欢 (RHEL) -

pip download package==version --no-deps --no-binary=:all:

© www.soinside.com 2019 - 2024. All rights reserved.