QDAirPortBackend0122/deploy/python-dependencies-offline.md
2026-01-22 13:19:47 +08:00

6.3 KiB
Raw Permalink Blame History

Python依赖库离线部署指南

本文档提供了 QAUP-Management 项目中 tools 目录下 Python 脚本的离线部署指南。

📋 概述

通过对 tools 目录下 4 个 Python 文件的依赖分析,除了 Flask 之外,还需要安装以下外部库用于完整功能支持。

📂 分析的文件

  • tools/mock_airport.py - 机场管理系统模拟服务
  • tools/mock_traffic_light.py - 红绿灯设备模拟器
  • tools/mock_unmanned_vehicle.py - 无人车厂商平台模拟服务
  • tools/aircraft_routes_from_api.py - 航空器路由数据定义

📦 依赖库清单

🚀 必需的外部库

库名 用途 使用文件 关键功能
Flask Web服务框架 所有mock_*.py文件 API服务、HTTP路由
pyproj 坐标系转换 mock_airport.py CGCS2000↔WGS84精确转换
Shapely 几何操作 mock_airport.py 路径合并(linemerge)、几何计算

📚 内置库(无需安装)

以下库为 Python 标准库,无需额外安装:

time, math, logging, os, threading, atexit, socket, json,
argparse, datetime, signal, typing, collections.abc, copy

🔄 回退机制

  • pyproj: 不可用时自动回退到简化坐标转换算法
  • Shapely: 不可用时跳过路径合并,基本功能仍可用

🛠️ 离线部署步骤

步骤1在联网机器上下载依赖包

# 创建依赖包目录
mkdir offline_packages
cd offline_packages

# 下载所有依赖包(包含依赖的依赖)
pip download Flask pyproj Shapely

# 或者如果有requirements.txt
pip download -r ../requirements.txt

步骤2打包传输

# 打包下载的文件
tar -czf python_packages.tar.gz offline_packages/

# 传输到离线机器
scp python_packages.tar.gz user@offline-server:/path/to/destination/

步骤3在离线机器上安装

# 解压依赖包
tar -xzf python_packages.tar.gz

# 离线安装
pip install --find-links ./offline_packages --no-index Flask pyproj Shapely

# 或者如果有requirements.txt
pip install --find-links ./offline_packages --no-index -r requirements.txt

安装验证

验证脚本

创建 test_dependencies.py 文件:

#!/usr/bin/env python3
"""
依赖库安装验证脚本
"""
import sys

def test_imports():
    """测试所有必需库的导入"""
    success = True

    # 测试基础库
    try:
        import flask
        print("✅ Flask: OK")
    except ImportError as e:
        print(f"❌ Flask: FAILED - {e}")
        success = False

    # 测试坐标转换库
    try:
        import pyproj
        print("✅ pyproj: OK")
    except ImportError as e:
        print(f"⚠️  pyproj: MISSING - 将使用简化坐标转换算法")

    # 测试几何库
    try:
        import shapely
        print("✅ Shapely: OK")
    except ImportError as e:
        print(f"⚠️  Shapely: MISSING - 路径合并功能将被跳过")

    # 测试标准库
    standard_libs = [
        'time', 'math', 'logging', 'os', 'threading', 'atexit',
        'socket', 'json', 'argparse', 'datetime', 'signal', 'typing'
    ]

    for lib in standard_libs:
        try:
            __import__(lib)
        except ImportError as e:
            print(f"❌ {lib}: FAILED - {e}")
            success = False

    print("✅ 所有标准库: OK")

    return success

def test_functionality():
    """测试关键功能"""
    print("\n🧪 测试关键功能...")

    # 测试坐标转换
    try:
        from pyproj import CRS, Transformer
        wgs84_crs = CRS.from_epsg(4326)
        print("✅ 坐标系转换功能: OK")
    except ImportError:
        print("⚠️  坐标系转换功能: 使用简化算法")
    except Exception as e:
        print(f"❌ 坐标系转换功能: ERROR - {e}")

    # 测试几何操作
    try:
        from shapely.geometry import LineString
        from shapely.ops import linemerge
        lines = [LineString([(0,0), (1,1)]), LineString([(1,1), (2,2)])]
        merged = linemerge(lines)
        print("✅ 几何操作功能: OK")
    except ImportError:
        print("⚠️  几何操作功能: 路径合并将被跳过")
    except Exception as e:
        print(f"❌ 几何操作功能: ERROR - {e}")

if __name__ == "__main__":
    print("🔍 验证Python依赖库安装...")
    print("=" * 50)

    if test_imports():
        print("\n✅ 核心依赖库验证通过")
        test_functionality()
        print("\n🎉 系统准备就绪可以运行tools目录下的Python脚本")
        sys.exit(0)
    else:
        print("\n❌ 依赖库验证失败,请检查安装")
        sys.exit(1)

运行验证:

python test_dependencies.py

📄 requirements.txt

建议创建 requirements.txt 文件:

# QAUP-Management Tools Dependencies
Flask>=2.0.0
pyproj>=3.0.0
Shapely>=1.8.0

🔧 故障排除

常见问题

  1. pyproj 安装失败

    # 可能需要系统级依赖
    # Ubuntu/Debian
    sudo apt-get install libproj-dev proj-data proj-bin
    
    # CentOS/RHEL
    sudo yum install proj-devel
    
  2. Shapely 安装失败

    # 可能需要 GEOS 库
    # Ubuntu/Debian
    sudo apt-get install libgeos-dev
    
    # CentOS/RHEL
    sudo yum install geos-devel
    
  3. 权限问题

    # 使用用户安装
    pip install --user --find-links ./offline_packages --no-index Flask pyproj Shapely
    

验证服务启动

# 测试启动各个模拟服务
cd tools

# 机场管理服务 (端口8090)
python3 mock_airport.py

# 红绿灯模拟器 (端口8082)
python3 mock_traffic_light.py

# 无人车平台服务 (端口8091)
python3 mock_unmanned_vehicle.py

📝 注意事项

  1. Python版本: 建议使用Python 3.7+
  2. 网络隔离: 确保 --no-index 参数防止联网下载
  3. 依赖版本: 固定版本号避免兼容性问题
  4. 回退机制: pyproj和Shapely不可用时会自动降级基本功能仍可用
  5. 日志目录: 确保运行目录有写权限创建logs目录

🆘 技术支持

如果遇到安装问题:

  1. 检查Python版本: python --version
  2. 检查pip版本: pip --version
  3. 运行验证脚本: python test_dependencies.py
  4. 查看错误日志: logs/mock_server.log

文档生成时间: 2024年 适用于: QAUP-Management 项目 tools 目录