本页面介绍 sunvpy Python 库的安装流程、环境配置要求以及验证方法。sunvpy 是 SunvStation 地理信息系统的官方 Python 脚本接口，通过 SWIG 技术将 C++ 核心功能封装为 Python 模块，为开发者提供高效的二次开发和自动化数据处理能力。

Sources: [__init__.py](__init__.py#L1-L5)

## 系统要求

使用 sunvpy 库需要满足以下软硬件环境要求。下表详细列出了各项配置要求和建议。

| 配置项 | 最低要求 | 推荐配置 | 说明 |
|-------|---------|---------|------|
| 操作系统 | Windows 7/8.1/10 | Windows 10/11 | sunvpy 目前仅支持 Windows 平台 |
| Python 版本 | Python 3.8+ | Python 3.10 - 3.13 | 需要与 SunvStation 版本匹配的 Python 版本 |
| SunvStation | SunvStation 10.0+ | 最新稳定版 | SunvStation 软件本体必须已正确安装 |
| 磁盘空间 | 100 MB | 200 MB+ | 包含 sunvpy 模块及其依赖库 |
| 内存 | 2 GB RAM | 4 GB RAM+ | 处理大规模数据集时需要更多内存 |
| 架构 | x86-64 | x86-64 | 仅支持 64 位操作系统和 Python |

Python 版本的选择尤为重要，因为 sunvpy 中的 `.pyd` 扩展模块是编译好的二进制文件，必须与 Python 解释器的版本和位数完全匹配。错误的环境配置会导致模块加载失败。

Sources: [PySSCore.py](PySSCore.py#L1-L10)

## 安装方法

sunvpy 通常作为 SunvStation 安装包的一部分自动安装到 Python 的 site-packages 目录。安装流程可以分为自动安装和手动安装两种方式。

### 自动安装

自动安装是最推荐的方式，由 SunvStation 安装程序自动完成所有配置工作。

```mermaid
flowchart LR
    A[运行 SunvStation 安装程序] --> B{选择 Python 版本}
    B -->|指定 Python 安装路径| C[安装程序自动检测 Python 环境]
    B -->|使用自带 Python| D[安装程序部署内置 Python 环境]
    C --> E[复制 sunvpy 到 site-packages]
    D --> E
    E --> F[注册环境变量]
    F --> G[创建桌面快捷方式]
    G --> H[完成安装]
```

在安装 SunvStation 时，安装程序会自动检测系统中的 Python 环境，并提示用户选择使用现有的 Python 解释器还是安装 SunvStation 自带的 Python 版本。安装程序会将 sunvpy 包复制到指定 Python 版本的 `Lib\site-packages\sunvpy` 目录下。

### 手动安装

如果需要手动配置 sunvpy 环境，可以按照以下步骤操作。

| 步骤 | 操作 | 详细说明 |
|-----|------|---------|
| 1 | 定位安装目录 | 找到 SunvStation 安装目录下的 script 子目录 |
| 2 | 复制文件 | 将 sunvpy 整个文件夹复制到 Python 的 site-packages 目录 |
| 3 | 验证依赖 | 确保所有 .pyd 文件和对应的 .py 文件完整 |
| 4 | 配置环境变量 | 如有需要，添加相关路径到 PATH 环境变量 |
| 5 | 测试导入 | 运行 Python 测试导入是否成功 |

手动安装需要确保所有模块文件完整，包括 Python 封装文件（.py）和 C++ 扩展文件（.pyd）。缺失任何一个文件都可能导致模块功能异常。

Sources: [PySSProcess.py](PySSProcess.py#L1-L19)

## 环境验证

安装完成后，通过以下步骤验证环境配置是否正确。验证过程分为导入测试、功能测试和版本检查三个环节。

### 导入测试

打开命令行或 Python 解释器，尝试导入 sunvpy 模块。

```python
# 测试基本导入
import sunvpy
print(f"sunvpy 版本: {sunvpy.get_version()}")

# 测试 SSProcess 导入
from sunvpy import SSProcess
print("SSProcess 导入成功")
```

如果导入成功且没有报错，说明基本环境配置正确。如果出现 `ModuleNotFoundError` 或 `ImportError`，请检查 Python 版本匹配和文件完整性。

### 功能测试

运行一个简单的功能测试脚本，验证核心模块是否正常工作。

```mermaid
flowchart TD
    A[启动功能测试] --> B[导入 SSProcess]
    B --> C{导入成功?}
    C -->|否| D[检查 .pyd 文件完整性]
    C -->|是| E[获取工作空间实例]
    E --> F{工作空间可用?}
    F -->|否| G[检查 SunvStation 许可]
    F -->|是| H[测试地图连接]
    H --> I[输出测试结果]
    D --> J[修复问题后重试]
    G --> J
```

功能测试脚本可以验证 sunvpy 是否能够正确连接到 SunvStation 的核心服务。测试失败通常意味着 SunvStation 主程序未运行或许可证配置有问题。

### 版本信息检查

通过版本信息确认安装的 sunvpy 版本，确保与 SunvStation 主程序版本兼容。

```python
# 完整版本检查
import sunvpy

print("=" * 50)
print("sunvpy 环境信息")
print("=" * 50)
print(f"模块版本: {sunvpy.__version__}")
print(f"模块作者: {sunvpy.__author__}")
print(f"模块描述: {sunvpy.__description__}")
print("=" * 50)

# 检查 SSProcess 实例
from sunvpy import SSProcess

print(f"工作空间实例: {SSProcess.getWorkspace()}")
print(f"当前地图实例: {SSProcess.getCurrentMap()}")
```

Sources: [__init__.py](__init__.py#L1-L12) [PySSProcess.py](PySSProcess.py#L47-L56)

## 常见问题排查

在安装和使用过程中可能会遇到一些常见问题。下表列出了典型问题及其解决方案。

| 问题现象 | 可能原因 | 解决方案 |
|---------|---------|---------|
| `ImportError: DLL load failed` | Python 版本与 .pyd 编译版本不匹配 | 使用与 sunvpy 编译版本相同的 Python 解释器 |
| `ModuleNotFoundError: No module named 'sunvpy'` | sunvpy 未安装到 site-packages 目录 | 检查安装路径或重新安装 SunvStation |
| `AttributeError: module has no attribute 'SSProcess'` | PySSProcess.py 文件缺失或损坏 | 重新复制完整的 sunvpy 文件夹 |
| 程序运行时提示"工作空间不可用" | SunvStation 主程序未运行或许可证问题 | 启动 SunvStation 并检查许可证配置 |
| SWIG 扩展模块无法加载 | 缺少必要的 VC++ 运行库 | 安装 Microsoft Visual C++ Redistributable |
| 属性访问异常 | ObjBaseAttr.py 配置文件损坏 | 检查或重新安装属性定义文件 |

### 调试技巧

当遇到问题时，可以使用以下调试方法定位具体原因。

1. **检查模块完整性**：验证所有必要的文件是否存在
```python
import os
sunvpy_path = os.path.dirname(sunvpy.__file__)
required_files = [
    'PySSCore.py', '_PySSCore.pyd',
    'PySSMap.py', '_PySSMap.pyd',
    'PySSProcess.py', 'ObjBaseAttr.py'
]

for file in required_files:
    full_path = os.path.join(sunvpy_path, file)
    exists = os.path.exists(full_path)
    print(f"{file}: {'✓' if exists else '✗'}")
```

2. **检查 Python 环境信息**：确认 Python 版本和架构
```python
import sys
print(f"Python 版本: {sys.version}")
print(f"Python 路径: {sys.executable}")
print(f"架构位数: {'64位' if sys.maxsize > 2**32 else '32位'}")
```

3. **查看详细错误信息**：使用 traceback 模块获取完整堆栈
```python
import traceback
try:
    from sunvpy import SSProcess
except Exception as e:
    traceback.print_exc()
```

Sources: [PySSCore.py](PySSCore.py#L1-L20) [__init__.py](__init__.py#L1-L12)

## 目录结构说明

理解 sunvpy 的目录结构有助于调试问题和学习模块组织方式。下表详细说明了目录中各文件的用途。

| 文件/目录 | 类型 | 说明 |
|----------|------|------|
| `__init__.py` | Python 文件 | 包初始化文件，定义版本信息和导出接口 |
| `PySSProcess.py` | Python 文件 | SSProcessManager 主类实现，提供统一 API 入口 |
| `ObjBaseAttr.py` | Python 文件 | 地物基本属性名称索引和类型定义 |
| `PySS*.py` | Python 文件 | SWIG 生成的 Python 封装文件 |
| `_PySS*.pyd` | 二进制文件 | 编译好的 C++ 扩展模块 |
| `ssprocess_mixins/` | 目录 | Mixin 功能模块目录 |
| `ssprocess_mixins/selection_mixin.py` | Python 文件 | 选择集操作功能实现 |
| `ssprocess_mixins/geo_edit_mixin.py` | Python 文件 | 地理编辑功能实现 |
| `ssprocess_mixins/project_mixin.py` | Python 文件 | 工程管理功能实现 |
| `ssprocess_mixins/log_mixin.py` | Python 文件 | 日志记录功能实现 |
| `ssprocess_mixins/progress_mixin.py` | Python 文件 | 进度管理功能实现 |

目录结构体现了 sunvpy 的分层设计理念。顶层目录包含所有对外暴露的模块，`ssprocess_mixins` 子目录包含内部实现细节，通过 Mixin 模式组织功能，提高了代码的可维护性和扩展性。

Sources: [PySSProcess.py](PySSProcess.py#L21-L26) [ssprocess_mixins/project_mixin.py](ssprocess_mixins/project_mixin.py#L1-L50)

## 环境配置最佳实践

遵循以下最佳实践可以避免大多数环境配置问题，提高开发效率。

| 实践 | 说明 | 收益 |
|-----|------|------|
| 使用虚拟环境 | 为每个项目创建独立的 Python 虚拟环境 | 避免依赖冲突，便于环境隔离 |
| 版本固定 | 在项目中记录使用的 Python 版本 | 确保团队环境一致，减少兼容性问题 |
| 定期备份 | 备份 sunvpy 安装目录和相关配置 | 快速恢复损坏的环境 |
| 文档记录 | 记录安装步骤和配置细节 | 便于团队共享和问题排查 |
| 测试驱动 | 编写自动化测试脚本验证环境 | 提前发现问题，提高环境可靠性 |

### 推荐开发环境设置

对于开发团队，建议使用以下环境配置流程。

```mermaid
flowchart LR
    A[创建虚拟环境] --> B[安装 SunvStation]
    B --> C[配置 Python 路径]
    C --> D[验证 sunvpy 导入]
    D --> E[运行环境测试脚本]
    E --> F{测试通过?}
    F -->|否| G[检查错误日志]
    F -->|是| H[保存环境配置]
    G --> I[修复配置问题]
    I --> D
    H --> J[开始开发工作]
```

虚拟环境可以通过 `venv` 或 `conda` 创建，确保每个项目都有独立且一致的运行环境。测试脚本应该包含基本导入测试、功能测试和性能基准测试，在环境配置完成后立即运行。

Sources: [PySSProcess.py](PySSProcess.py#L124-L140)

## 下一步学习

完成环境配置后，建议按照以下学习路径深入掌握 sunvpy 的使用方法。

- [第一个脚本：查询地物属性](3-di-ge-jiao-ben-cha-xun-di-wu-shu-xing) — 学习编写第一个实用的 sunvpy 脚本，掌握地物属性查询的基本操作
- [使用 SSProcess 管理选择集](4-shi-yong-ssprocess-guan-li-xuan-ze-ji) — 深入了解选择集的概念和操作方法
- [运行内置示例脚本](5-yun-xing-nei-zhi-shi-li-jiao-ben) — 通过实际案例学习常用 API 的组合使用

对于想要理解 sunvpy 底层原理的开发者，可以继续阅读：
- [SunvStation 系统架构](6-sunvstation-xi-tong-jia-gou) — 了解整个系统的架构设计
- [SWIG 封装机制说明](7-swig-feng-zhuang-ji-zhi-shuo-ming) — 深入理解 Python 与 C++ 的交互机制
- [Mixin 设计模式](9-mixin-she-ji-mo-shi) — 学习代码组织和功能扩展的设计思想