# PyPhotServer **Repository Path**: Photlab/pyphot-server ## Basic Information - **Project Name**: PyPhotServer - **Description**: 光纤传输仿真运算平台服务端 - **Primary Language**: Python - **License**: MulanPubL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-10-30 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 PyPhotServer 部署与开发指南 ## 1. 📦 模块简介 PyPhotServer 是介于 **PhotLab GUI 界面** 与 **PyPhotEngine / PyPhotPassive** 之间的通信模块,负责仿真任务的统一接入与分发。 - 项目地址:https://gitee.com/Photlab/pyphot-server.git --- ## 2. ⚙️ 功能说明 PyPhotServer 的主要功能包括: - 接收来自本地主机或远程主机的客户端仿真请求 - 对仿真消息进行解析与调度 - 将任务交付给计算引擎或无源器件仿真库执行计算 - 将计算结果返回给客户端 --- ## 3. 🧩 依赖环境 ### 3.1 Python 版本要求 请确保 Python 版本 **≥ 3.11**: ```bash python --version ``` ### 3.2 配置国内镜像源(推荐) ```bash pip config set global.index-url https://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com ``` ### 3.3 创建虚拟环境 ```bash python -m venv .venv ``` ### 3.4 激活虚拟环境 - Windows: ```bash .venv\Scripts\activate ``` - macOS / Linux: ```bash source .venv/bin/activate ``` ### 3.5 升级 pip ```bash python -m pip install --upgrade pip ``` ### 3.6 安装项目依赖 - Windows: ```bash pip install -r requirements_win.txt ``` - macOS / Linux: ```bash pip install -r requirements_linux.txt ``` #### 安装 PyTorch - **CPU 版本**: ```bash pip install torch ``` - **GPU 版本(CUDA)**: - 使用PyTorch官网https://pytorch.org/提供的安装命令(可能版本会有差异): ```bash pip install torch --index-url https://download.pytorch.org/whl/cu126 # 或使用国内镜像 pip install torch -f https://mirrors.aliyun.com/pytorch-wheels/cu126/ ``` > Torch 与 CUDA 版本对应关系请参考: > https://pytorch.org/get-started/previous-versions/ ### 3.7 运行服务端 ```bash python main.py 127.0.0.1 9000 TBinaryProtocol ``` --- ## 4. 🛠️ 开发指南 本节以一个 **“两数之和(Calculator)”** 示例介绍 Thrift 接口开发流程。 ### 4.1 编写 Thrift 接口文件 路径:`/interface/calculator_service.thrift` ```thrift service Calculator { i32 add(1:i32 a, 2:i32 b) } ``` ### 4.2 自动生成代码 ```bash thrift --gen py ./interface/calculator_service.thrift ``` 将生成的 `calculator_service` 目录移动至: ``` phot_server/rpc/ ``` ### 4.3 编写服务端处理逻辑 #### 4.3.1 业务实现(Manager) 路径:`phot_server/manager/calculator_manager.py` ```python class CalculatorManager: def add(self, a: int, b: int) -> int: return a + b ``` #### 4.3.2 方法注册(Service) 路径:`phot_server/service/calculator_service.py` ```python from phot_server.core.api_injector import api from phot_server.manager.calculator_manager import CalculatorManager from phot_server.rpc.calculator_service.Calculator import Processor class CalculatorService: def __init__(self): self.calculator_manager = CalculatorManager() @api(Processor.process_add) def add(self, a: int, b: int) -> int: return self.calculator_manager.add(a, b) ``` #### 4.3.3 方法声明 - `phot_server/core/main_handler.py` ```python from phot_server.manager.calculator_manager import CalculatorManager class MainHandler: def __init__(self): self.calculator_manager = CalculatorManager() ``` - `phot_server/service/__init__.py` ```python import phot_server.service.calculator_service ``` ### 4.4 客户端测试 ```python from thrift.transport import TSocket, TTransport from thrift.protocol import TBinaryProtocol from phot_server.rpc.calculator_service.Calculator import Client transport = TTransport.TBufferedTransport( TSocket.TSocket("127.0.0.1", 9000) ) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = Client(protocol) transport.open() print(client.add(1, 2)) ``` --- ## 5. 🐞 调试方法 - 直接实例化 Manager 进行单元测试 - 使用 `print` 输出中间变量 - 使用 PyCharm / VS Code 设置断点逐步调试 ```python from phot_server.manager.calculator_manager import CalculatorManager mgr = CalculatorManager() print(mgr.add(1, 2)) ``` --- ## 6. 📦 打包方式 ### 6.1 源码打包 - 采用 **源码形式进行打包与分发** - 保留完整项目目录结构,便于二次开发、调试与维护 - 适用于开发环境部署或需要频繁修改代码的场景 ### 6.2 打包为目标平台可执行文件 - 使用 **PyInstaller** 将项目打包为独立的可执行文件 - 适用于无需 Python 运行环境的部署场景 ```shell pyinstaller main.spec ``` --- ## 7. 🚀 部署步骤 ### 7.1 源码部署 - 拉取项目源码 - 创建并激活 Python 虚拟环境 - 安装项目依赖 - 启动服务端进程 ### 7.2 可执行文件部署 - 将打包生成的可执行文件复制至目标运行环境 - 确保目标系统架构与打包平台一致 - 直接运行可执行文件启动服务端 - 按需配置端口、协议等运行参数 --- ## 8. ©️ 版权声明 本项目归 PhotLab 团队所有,仅供科研与内部使用,未经许可不得用于商业用途。