离线安装 Python 包及其全部依赖

最近服务器不让联网了,只能离线安装,我总结下面的教程,希望能帮助到同病相怜的人。


第一种方法 使用联网的电脑下载whl文件,然后复制到断网的服务器。

1. 在联网环境中下载包及依赖

使用 pip download 命令下载目标包及其所有依赖到指定目录:

pip download <package_name> -d ./packages

示例

pip download requests -d ./packages

关键参数

  • -d ./packages:指定依赖包的下载目录。
  • --platform:指定目标系统平台(如 win_amd64, manylinux2014_x86_64)。
  • --python-version:指定 Python 版本(如 3.8)。
  • --only-binary=:all::仅下载二进制包(避免源码编译问题)。

2. 生成依赖列表(可选)

若需明确依赖版本,可生成 requirements.txt 文件:

pip freeze > requirements.txt

或使用 pipdeptree 生成精确依赖树:

pip install pipdeptree
pipdeptree --packages <package_name> > requirements.txt

3. 将文件转移到离线环境

将下载的 packages 目录(及 requirements.txt)复制到离线机器。


4. 离线安装

在离线环境中使用以下命令安装:

pip install --no-index --find-links=./packages <package_name>

或根据 requirements.txt 安装:

pip install --no-index --find-links=./packages -r requirements.txt

注意事项

  1. 平台一致性
    确保下载时的操作系统、架构和 Python 版本与离线环境一致。跨平台需指定 --platform--python-version 等参数。

  2. 二进制依赖
    若环境无编译工具,使用 --only-binary=:all: 避免源码包。

  3. 依赖冲突
    复杂依赖建议在虚拟环境中操作,避免污染全局环境。


完整流程示例

以安装requests 为例,命令如下:

# 联网环境操作
mkdir packages
pip download requests -d ./packages --platform win_amd64 --python-version 3.10 --only-binary=:all:

# 离线环境操作
pip install --no-index --find-links=./packages requests

通过以上步骤,可确保离线环境中完整安装包及其所有依赖。

第二种方法 在联网的电脑上搭建虚拟环境,然后将虚拟环境复制到未联网的服务器上

这种方法,需要确保联网的电脑和未联网的电脑cuda一致。

在联网的电脑上安装虚拟环境,执行命令:

conda create --name py39 python=3.9

然后,配置环境。等所需要的安装包均安装后,再将找到虚拟环境,将其压缩。执行命令:

zip py39.zip  -r py39/

将py39.zip传到服务器的miniconda3/envs/文件夹下面。

scp py39.zip user@server:/path/to/miniconda3/envs/

然后解压,执行命令:

cd /path/to/miniconda3/envs/
unzip py39.zip

然后,在命令行使用source命令 添加虚拟环境
使用命令

source activate py39

如果不行,使用绝对路径,执行命令:

source /path/to/miniconda3/bin/activate /path/to/miniconda3/envs/py39

你可能感兴趣的:(python,开发语言)