【python】离线安装库到内网中

📅 2026/7/7 19:56:13 👁️ 阅读次数 📝 编程学习
【python】离线安装库到内网中

一、在外网机器上:下载所有依赖包(关键步骤)

你需要一台可以联网的电脑(Windows/Linux 都行),下载openpyxl及其所有依赖的.whl文件。

1. 先确认内网环境信息

在内网 Ubuntu 上,激活你的Test环境,查看 Python 版本和系统架构:

bash

conda activate Test python --version # 输出示例:Python 3.10.12 uname -m # 输出示例:x86_64

你的Test环境是Python 3.10x86_64架构,下载时要匹配。

2. 在外网机器上,下载所有依赖

在外网机器上,用和内网相同版本的 Python(比如 Python 3.10)执行:

bash

# 新建一个目录存包 mkdir openpyxl_offline cd openpyxl_offline # 下载 openpyxl 及其所有依赖 pip download openpyxl -d ./ --python-version 3.10 --platform linux_x86_64 --only-binary=:all:

执行完成后,openpyxl_offline目录里会有所有.whl文件(包括openpyxlet_xmlfile等依赖)。


二、把包传到内网 Ubuntu

通过 U 盘、内网文件共享等方式,把整个openpyxl_offline目录传到你的内网 Ubuntu 机器上,比如传到~/openpyxl_offline


三、在内网 Ubuntu 上,离线安装到你的Test环境

  1. 激活Test环境:

    bash

    conda activate Test
  2. 进入包目录并安装:

    bash

    cd ~/openpyxl_offline pip install --no-index --find-links=./ openpyxl
    • --no-index:禁止 pip 去外网找包
    • --find-links=./:告诉 pip 从当前目录找依赖
  3. 验证安装是否成功:

    bash

    python -c "import openpyxl; print(openpyxl.__version__)"

    如果能正常输出版本号,说明安装成功,你的pandas.read_excel报错就解决了。


四、备选方案:用 Conda 包离线安装

如果你习惯用 conda,也可以在外网下载.tar.bz2格式的 conda 包:

  1. 在外网 conda 环境里下载:

    bash

    conda install -c conda-forge openpyxl --download-only --prefix ./conda_pkgs
  2. conda_pkgs目录传到内网,然后安装:

    bash

    conda activate Test conda install --offline --use-local ./conda_pkgs/linux-64/openpyxl-*.tar.bz2

五、避坑提醒

  • ❌ 不要手动复制单个库文件:openpyxl依赖et_xmlfile等其他库,手动复制很容易漏依赖。
  • ✅ 必须下载和内网 Python 版本、系统架构完全匹配的包,否则会出现invalid ELF header或版本不兼容错误。
  • ✅ 安装时一定要先激活Test环境,否则会装到 base 环境里,不会被你的代码识别。

如何一次性捞出所有依赖?

你原本的命令已经很接近了,但还需要补充一个官方要求的组合参数:

bash

pip download flask==3.1.3 \ -d ./packages \ --python-version 3.10 \ --platform linux_x86_64 \ --only-binary=:all: \ --no-deps

🔧 关键参数解释

  • --no-deps:这是最关键的一点!当你指定了--platform--python-version这类跨平台参数时,根据pip的安全机制,必须配合--no-deps一起使用。这能强制pip完全基于你提供的目标环境信息来解析依赖,而不是依赖本地环境,从而确保所有子依赖都能被正确拉取。

  • --only-binary=:all::这个参数确保为所有包下载预编译的wheel格式文件(.whl)。wheel文件可以避免在离线服务器上因缺少C编译器而导致安装失败,是实现可靠离线部署的最佳实践。如果某些依赖没有提供wheel文件,这个命令会报错,方便你发现和处理。

📝 几点使用建议

  • 目标Python版本--python-version应使用不带点号的数字,如310,代表 Python 3.10。

  • 目标系统平台--platform的值应与你目标服务器的环境严格一致。如果目标服务器是较新的 Linux,可以尝试使用更通用的manylinux2014_x86_64

  • 下载结果:运行上述命令后,./packages目录下将包含Flask 3.1.3 以及它所有依赖.whl文件。

  • 离线安装:将./packages文件夹复制到目标机器后,使用如下命令即可完成离线安装:

    bash

    pip install --no-index --find-links ./packages flask==3.1.3
    • --no-index:强制pip只从本地查找,不访问网络索引。

    • --find-links ./packages:指定本地包所在的目录。