如何使用 Conda 和 Pip 离线下载 Python 包

在某些情况下,可能需要在没有网络连接的环境中安装 Python 包,例如在公司内网或安全环境中。为了实现这一目标,可以使用 Conda 和 Pip 提供的离线下载功能,提前将所需的包下载到本地,然后在目标环境中进行安装。以下是一个简单的指南,帮助你在离线环境中高效地管理 Python 包。


第一步:离线下载包

使用 Pip 下载

Pip 提供了一个非常方便的选项来离线下载包及其依赖。你可以使用以下命令下载指定的包及其依赖:

1
pip download package_name

如果你有一个 requirements.txt 文件,包含多个包的依赖,可以使用以下命令一次性下载所有包:

1
pip download -r requirements.txt

这会将所有包及其依赖下载到当前目录。你也可以指定下载路径,例如:

1
pip download -r requirements.txt -d /path/to/download

这样,所有下载的 .whl 文件和 .tar.gz 文件都会保存到指定的目录中。


使用 Conda 下载

Conda 也支持离线下载包。从 Conda 4.6 版本开始,conda install 命令支持 --download-only 选项,可以直接下载包而不安装。例如:

1
conda install --download-only package_name

这会将包下载到 Conda 的缓存目录中,通常是 ~/.conda/pkgsC:\Users\<username>\.conda\pkgs(Windows)。

你也可以将下载的包保存到指定的目录中,例如:

1
conda install --download-only -p /path/to/offline_pkgs <包名>

这会将包下载到指定的目录中。

注意事项

  • 使用 --download-only 时,Conda 会将包下载到缓存目录,但不会自动清理。如果需要手动清理缓存,可以使用以下命令:
    1
    conda clean --packages
  • 如果需要下载多个包,可以将它们列在 requirements.txt 文件中,然后逐个下载:
    1
    2
    3
    for pkg in $(cat requirements.txt); do
    conda install --download-only $pkg
    done

第二步:将下载的包传输到目标环境

将下载好的包(.whl 文件或 .tar.gz 文件)复制到目标机器的某个目录中。例如,你可以将它们放在 /path/to/offline_packages 目录中。


第三步:在离线环境中安装包

使用 Pip 安装

在离线环境中,你可以使用 pip install 命令安装下载的包。为了确保只从本地目录中查找包,可以使用以下命令:

1
pip install --no-index --find-links=/path/to/offline_packages package_name

如果你有一个 requirements.txt 文件,可以使用以下命令安装所有依赖:

1
pip install --no-index --find-links=/path/to/offline_packages -r requirements.txt

使用 Conda 安装

对于 Conda 下载的包,可以直接从缓存目录中安装。例如:

1
conda install --offline --use-local package_name

或者,你可以直接指定包的路径:

1
conda install /path/to/offline_packages/package_name

注意事项

  • 如果使用 Conda 的 --offline 选项,确保目标环境中已经存在所需的包。否则,Conda 会尝试从网络中下载。
  • 如果需要安装多个包,建议将它们全部下载到同一个目录中,然后使用 --use-local 选项。

注意事项

  1. 兼容性检查
    确保下载的包与目标环境中的 Python 版本和操作系统兼容。例如,某些包可能仅支持特定的 Python 版本或操作系统架构。

  2. 依赖管理
    如果包有依赖,确保下载所有必要的依赖文件。使用 pip download -r requirements.txt 或逐个下载 Conda 包可以自动处理依赖关系。

  3. 缓存清理
    如果你使用 Conda 下载包,Conda 会将包保存在缓存目录中。你可以定期清理缓存以释放空间:

    1
    conda clean --all
  4. 离线环境准备
    在离线环境中安装包时,确保目标机器上已经安装了 Conda 或 Pip,并且 Python 环境已经正确配置。


总结

通过使用 Pip 和 Conda 提供的离线下载功能,可以轻松地在没有网络连接的环境中管理和安装 Python 包。pip downloadconda install --download-only 命令提供了强大的工具,提前准备所需的包,从而在离线环境中节省时间和精力。有些包更新真尼玛草了!