离线安装python包及其依赖

文章讲述了在外网环境中通过pipdownload安装包时,需注意指定Python版本、平台和二进制选项。离线安装时需用--no-index和--find-links,以及如何处理no-build-isolation以解决缺失依赖的问题。特别提到了whl包和setuptools的特殊情况。
部署运行你感兴趣的模型镜像

总结

  1. 在外网环境下pip download需要的pkg或者 -r 指定的依赖文件。安装时注意约束操作系统,python版本和指定二进制选项,默认是当前download环境的python版本的操作系统。

  2. pip install --no-index --find-links=<dir| url> --no-build-isolation <pkg>

范例

可访问外网端执行命令(linux 服务器)

  1. pip download --python-version 3.11.4 --platform win_amd64 -d /Guido/py_dependence/pyautogui_pkg --only-binary=:all: pyautogui

    若发现找不到对应版本。可能是pyautogui没有维护到对应版本的python或者平台名下可用,导致pip找不到。

  2. 去除下载的约束(constraint) 如python版本和平台以及--only-binary=:all:,下载pyautogui。

    pip download -d path/to/save/pkg/and/depds/ pyautogui
  3. 进入到目录查看下载项对应的包的版本和平台,再通过pip download不能跨平台或python版本的包。

  4. 比如pyautogui的pillow依赖有指明python的版本和平台。

    pip download --python-version 3.11.4 --platform win_amd64 -d /data/jupyter_code/Guido/py_dependence/pyautogui_pkg --only-binary=:all: pillow
  5. 将下载好的包复制到目标机器(Windows系统)上,示例中是E:\pypkg\pyautogui

离线环境执行的命令

  1. pip install --no-index --find-links=E:\pypkg\pyautogui --no-build-isolation pyautogui

    1. --no-index 是不上网找包

    2. --find-links 是在哪里找包。可以指定多个目录。但是我指定了--find-links=F:\anaconda3\Lib\site-packages后依然会出现setuptools没有对应版本的错误,直到用了--no-build-isolation选项。

    3. --no-build-isolation 是不构建隔离的环境,防止在不存在所有必需的构建依赖项时运行构建。比如构建时说没有setuptools这种python3默认会安装的包。详情可参考链接1链接2的#9794

        注意!如果都是whl包则可以不用--no-build-isolation选项,比如pymupdf

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们被要求解决如何离线安装Python及其所有依赖项的问题。根据引用[1]、[2]、[4]、[5],我们可以总结出以下步骤: 核心思路:在联网机器上下载目标及其所有依赖项,然后传输到离线机器进行安装。 具体步骤: 1. 在联网机器上(要求与离线机器相同的Python版本和操作系统)使用`pip download`命令下载及其依赖。 关键参数: - `-d` 或 `--dest`: 指定下载存放的目录。 - `--platform`: 指定目标平台(如离线机器的平台,例如win_amd64, manylinux2014_x86_64等)。 - `--python-version`: 指定Python版本(如3.8)。 - `--only-binary=:all:`: 仅下载二进制(避免源码编译,因为离线机器可能没有编译环境)。 - `--no-build-isolation`: 防止构建时出现环境隔离问题(如缺少setuptools等,引用[2]提到)。 2. 将下载的整个目录复制到离线机器。 3. 在离线机器上使用`pip install`命令从本地目录安装,指定目录即可。 注意:如果离线机器有多个平台要求(如同时需要linux_x86_64和any),可能需要分别下载,或者使用`--platform`多次指定。 详细步骤: 步骤1:在联网机器上创建下载目录并下载 ```bash # 创建目录 mkdir ./offline_packages # 下载及其依赖 pip download -d ./offline_packages --platform win_amd64 --python-version 3.10 --only-binary=:all: --no-build-isolation pandas ``` 注意:这里以pandas为例,平台为Windows 64位,Python版本3.10。如果离线机器是Linux,则平台改为`manylinux2014_x86_64`等。 步骤2:将`./offline_packages`整个文件夹复制到离线机器。 步骤3:在离线机器上安装 ```bash pip install --no-index --find-links=./offline_packages pandas ``` 参数说明: - `--no-index`: 禁止连接PyPI。 - `--find-links`: 指定查找的目录。 如果遇到依赖问题,可以尝试先安装依赖包(按照字母顺序),或者使用`--no-deps`跳过依赖检查(不推荐,因为可能会漏装)。 引用[1]提到:要求开发python版本以及位数必须和离线安装的主机一致,否则会出现不匹配的问题。 引用[4]和[5]也提供了类似的方法,并强调了平台和版本的重要性。 特殊情况处理: - 如果需要编译,而离线机器没有编译环境,则必须下载二进制(使用`--only-binary=:all:`)。 - 如果下载有平台标识(如win_amd64),而离线机器是其他平台,则无法安装。因此下载时务必指定正确的平台。 对于Linux系统,如果无法确定平台标识,可以使用`pip debug --verbose`查看支持的平台标签。 另外,引用[3]提到可以使用镜像源加速下载(在线时),但离线安装不涉及。 生成的相关问题: 1. 如何确定目标机器的Python平台标识? 2. 离线安装时出现“平台不匹配”错误如何解决? 3. 如何批量离线安装多个Python? 现在,我们按照要求编写回答。</think>### 📦 离线安装 Python 及其依赖全攻略 根据引用[1][4][5],核心思路是:**在联网环境下载完整依赖包 → 传输到离线环境 → 批量安装**。以下是具体操作流程(以 Python 3.10 + Windows 为例): --- ### 🔧 步骤 1:联网环境下载依赖包(关键!) ```bash # 创建存放目录 mkdir offline_packages cd offline_packages # 下载目标及其所有依赖(以 pandas 为例) pip download pandas \ --python-version 3.10 \ # 必须与离线环境一致[^1] --platform win_amd64 \ # 系统平台标识[^4] --only-binary=:all: \ # 避免源码编译问题[^2] --no-build-isolation \ # 防止环境隔离报错[^2] -d ./packages # 指定下载目录 ``` **关键参数说明**: - `--platform`:根据系统选择 - Windows: `win_amd64` (64位) 或 `win32` (32位) - Linux: `manylinux2014_x86_64` - macOS: `macosx_10_9_x86_64` - `--python-version`:如 `3.8`, `3.9` 等(通过 `python --version` 查询) --- ### 📂 步骤 2:传输文件到离线环境 1. 将 `offline_packages/packages` 目录压缩 2. 通过 U 盘/内网传输到目标机器 3. 解压到指定路径(如 `D:\offline_pkgs`) --- ### ⚙ 步骤 3:离线环境批量安装 ```bash # 进入存放目录 cd D:\offline_pkgs # 一键安装所有依赖包 pip install --no-index --find-links=./ pandas ``` **参数解析**: - `--no-index`:禁止连接 PyPI 服务器 - `--find-links=./`:从当前目录查找依赖包 --- ### ✅ 验证安装 ```python import pandas as pd print(pd.__version__) # 输出版本号即成功 ``` --- ### ⚠️ 避坑指南(引用[1][2][5]) 1. **版本严格匹配**: - Python 主版本(3.10≠3.9) - 操作系统位数(64位≠32位) - 平台标识(Windows/Linux/macOS 不可混用) 2. **依赖完整性**: - 大型(如 TensorFlow)需额外检查: ```bash pip download tensorflow --no-deps # 先下主 pip download tensorflow # 再下依赖 ``` 3. **Linux 特殊处理**: ```bash # 解决 glibc 兼容问题 pip download numpy --platform manylinux2014_x86_64 \ --implementation cp \ --python-version 3.10 \ --only-binary=:all: ``` --- ### 🔄 替代方案:导出完整环境(引用[1]) ```bash # 联网环境生成 requirements.txt pip freeze > requirements.txt # 批量下载所有依赖 pip download -r requirements.txt \ -d ./full_packages \ --platform win_amd64 \ --python-version 3.10 # 离线环境安装 pip install --no-index --find-links=./full_packages -r requirements.txt ``` --- ### 📊 常见问题解决 | 问题 | 解决方案 | |------------------------------|----------------------------| | `ERROR: No matching distribution` | 检查 `--platform` 和 `--python-version` 是否匹配离线环境[^1] | | `Missing dependencies: numpy` | 使用 `pip download` 时勿加 `--no-deps`[^4] | | Linux 报错 `GLIBC version` | 改用 `manylinux2014` 或 `manylinux2010` 平台标签[^5] | > 💡 **经验**:复杂(如 SciPy)建议优先下载 `.whl` 格式的二进制,避免源码编译问题[^2][^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值