当前位置: 首页 > news >正文

【离线安装python包的方法】

通过以下步骤实现本地下载依赖包并离线传输到服务器安装:


步骤 1:在本地下载所有依赖包

使用 pip download 命令将 requirements.txt 中的包及其依赖下载到本地目录(例如 ./packages):

pip download -r requirements.txt -d ./packages
关键注意事项
  1. 平台和Python版本兼容性

    • 如果服务器环境与本地环境不同(例如服务器是 Linux,本地是 Windows),需指定服务器的平台和 Python 版本。例如:
      pip download \--only-binary=:all: \--platform manylinux2014_x86_64 \  # 替换为服务器的平台标签--python-version 3.10 \            # 替换为服务器的Python版本-r requirements.txt \-d ./packages
      
    • 可用平台标签列表:https://peps.python.org/pep-0600/#supported-platforms
  2. 生成哈希校验(可选)

    pip hash -r requirements.txt > requirements.hash
    

    上传 requirements.hash 到服务器后,安装时校验包完整性。


步骤 2:将依赖包传输到服务器

将本地 packages 目录和 requirements.txt 上传到服务器:

# 使用 scp(示例)
scp -r ./packages user@server:/path/to/project/
scp requirements.txt user@server:/path/to/project/

步骤 3:在服务器上离线安装

  1. 创建并激活虚拟环境

    python -m venv myenv
    source myenv/bin/activate
    
  2. 离线安装依赖包

    pip install --no-index --find-links=./packages -r requirements.txt
    
验证安装
pip list  # 检查包是否全部安装

常见问题解决

  1. 依赖缺失

    • 确保本地下载时已包含所有依赖,可用 --no-deps 排除测试,但通常不建议。
    • 在本地模拟服务器环境下载(推荐使用 Docker 容器)。
  2. 平台不兼容错误

    • 使用 Docker 在容器内下载正确的包:
      docker run -v $(pwd):/app python:3.10-slim \sh -c "pip download -r /app/requirements.txt -d /app/packages"
      

完整脚本示例

# 本地操作:下载依赖包
pip download -r requirements.txt -d ./packages# 传输到服务器
scp -r ./packages user@server:/project/
scp requirements.txt user@server:/project/# 服务器操作:安装
ssh user@server "cd /projectpython -m venv myenvsource myenv/bin/activatepip install --no-index --find-links=./packages -r requirements.txt
"

通过这种方式,你可以高效地在离线环境中部署 Python 依赖。

你可以通过以下方法快速获取服务器的平台标签(如 manylinux2014_x86_64):


方法 1:直接查看系统信息

步骤 1:查看系统架构
uname -m
  • 输出为 x86_64aarch64(最常见):
    • x86_64 → 对应 _x86_64 后缀
    • aarch64 → 对应 _aarch64 后缀
步骤 2:检查 glibc 版本
ldd --version | head -n1
  • 输出示例:ldd (GNU libc) 2.17
  • 根据 glibc 版本匹配平台标签:
    • glibc ≥ 2.17manylinux2014
    • glibc ≥ 2.12manylinux2010
    • glibc < 2.12manylinux1
组合结果
  • 例如:manylinux2014_x86_64

方法 2:使用 Python 脚本获取兼容标签

运行以下 Python 代码直接列出所有支持的平台标签:

python -c "
import pip._internal.utils.compatibility_tags as tags;
print('\n'.join([str(t) for t in tags.get_supported()]))"
  • 输出示例(关注 manylinux 开头的标签):
    manylinux2014_x86_64
    manylinux2010_x86_64
    manylinux1_x86_64
    ...
    

方法 3:通过 pip debug 命令

pip debug --verbose | grep "Compatible tags"
  • 输出示例:
    Compatible tags: manylinux2014_x86_64, manylinux2010_x86_64, ..., linux_x86_64
    

常见 Linux 平台标签速查表

系统架构glibc 版本推荐平台标签
x86_64≥ 2.17manylinux2014_x86_64
x86_64≥ 2.12manylinux2010_x86_64
x86_64< 2.12manylinux1_x86_64
aarch64≥ 2.17manylinux2014_aarch64
ARMv7≥ 2.17manylinux2014_armv7l

完整操作示例

假设服务器是 x86_64 架构 + glibc 2.28,则使用:

pip download \--only-binary=:all: \--platform manylinux2014_x86_64 \--python-version 3.10 \-r requirements.txt \-d ./packages

验证下载的包

检查下载的 .whl 文件名是否包含目标平台标签:

ls packages/*.whl
  • 正确示例:numpy-1.24.4-cp310-cp310-manylinux2014_x86_64.whl

注意事项

  1. 如果无法确定平台标签

    • 使用 Docker 在容器内下载(确保与服务器环境一致):
      docker run --rm -v $(pwd):/app python:3.10-slim \bash -c "pip download -r /app/requirements.txt -d /app/packages"
      
  2. 混合架构场景

    • 如果服务器同时支持多种平台(如 manylinux1manylinux2014),直接使用更通用的标签(如 manylinux1)。

通过以上方法,你可以精准匹配服务器的平台标签,避免因环境差异导致的安装失败。

相关文章:

  • Nginx 安全防护与 HTTPS 部署
  • 【基础】Python包管理工具uv使用教程
  • Linux远程管理
  • HHsuite3 的 HHblits 和 HHsearch比较
  • 【上位机——MFC】单文档和多文档视图架构
  • TestStand API 简介
  • 猿人学web端爬虫攻防大赛赛题第7题——动态字体,随风漂移
  • 本地文件批量切片处理与大模型精准交互系统开发指南
  • C# 使用SunnyUI控件 (VS 2019)
  • UE5 渲染思路笔记(角色)
  • Java学习手册:分库分表策略
  • UE5 诺伊腾动捕使用笔记
  • 欧拉系统(openEuler)上部署OpenStack的完整指南 ——基于Yoga版本的全流程实践
  • 【LDM】视觉自回归建模:通过Next-Scale预测生成可扩展图像(NeurIPS2024最佳论文阅读笔记与吃瓜)
  • 打造智慧养老实训室,构建科技赋能养老新生态
  • TDengine 车联网案例
  • 51单片机同一个timer 作为定时器和波特率发生器么?
  • LeetCode 热题 100 79. 单词搜索
  • Spring Cloud Stream集成RocketMQ(kafka/rabbitMQ通用)
  • 如何选择 边缘计算服务器
  • 印观察|印巴战火与莫迪政府三重冒险:南亚火药桶已至临界点
  • 何立峰将访问瑞士、法国并举行中美经贸高层会谈、第十次中法高级别经济财金对话
  • 竞彩湃|巴萨客场淘汰国际米兰,巴黎双杀阿森纳
  • 世界哮喘日丨张旻:哮喘的整体诊断率不足三成,吸入治疗是重要治疗手段
  • “注胶肉”或已泛滥?这几种肉,再爱吃也要管住嘴
  • 听炮检书:柳诒徵1927年的选择