# PythonInterpreter **Repository Path**: leoZhangs/python-interpreter ## Basic Information - **Project Name**: PythonInterpreter - **Description**: 一个基于pybind11的C++/Python解释器。可以在C++项目中集成python算法脚本。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-09 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Cpp ## README # Python解释器集成应用 ## 项目简介 本项目是一个集成Python解释器的C++应用程序,主要功能是通过pybind11嵌入Python解释器来执行Python脚本,特别专注于绘制NetCDF数据的断面图。项目结合了C++的高性能与Python在科学计算领域的强大生态优势。 ## 主分支 Master 适用于python3.12以上版本,支持直接使用find_package查找Python解释器 ## python_old_version 适用于python3.12以下版本(示例以python3.6为测试),需要手动指定Python解释器路径、头文件和动态库路径 ## 主要功能 - 嵌入式Python解释器集成 - NetCDF数据断面图可视化 - 支持标量和矢量数据的绘制 - 自动根据断面方向选择坐标轴 - 支持设置数据范围、颜色层级等显示参数 ## 核心模块 - **Python解释器集成**:使用pybind11库在C++中嵌入Python解释器 - **断面图绘制**:实现专业的海洋数据可视化功能 - **参数配置系统**:支持灵活的绘图参数设置 ## 使用说明 ### C++端调用Python绘图 ```cpp // 示例:调用Python绘制断面图 std::vector files = {"file1.nc", "file2.nc"}; std::vector vars = {"var1", "var2"}; std::pair point1 = {120.0, 30.0}; std::pair point2 = {125.0, 32.0}; py::list files_list = py::cast(files); py::list vars_list = py::cast(vars); auto my_module = py::module_::import("plot_cross_section"); my_module.attr("plot_cross_section")( py::cast(files), py::cast(vars), py::str("lon"), py::str("lat"), py::str("lay"), py::str("time"), py::make_tuple(point1.first, point1.second), py::make_tuple(point2.first, point2.second), py::int_(0), py::float_(0.0), py::float_(100.0), py::int_(10), py::float_(1.0), py::bool_(true) ); ``` ### Python端绘图函数 ```python def plot_cross_section(file_list: list[str], var_list: list[str], lon_name: str, lat_name: str, depth_name: str, time_name: str, point1: tuple[float, float], point2: tuple[float, float], time_index: int = 0, vmin: float = None, vmax: float = None, n_levels: int = 10, sigma: float = 1.0, trim_empty_depth: bool = True) -> str: """ 绘制NetCDF断面图(支持标量和矢量) 自动根据断面方向选择横坐标(经度或纬度) """ # ...绘图实现代码... return "cross_section.png" ``` ## 依赖库 - C++端: - pybind11 - Qt5 - Python端: - matplotlib - netCDF4 - numpy ## 许可证 本项目采用MIT许可证,请参见LICENSE文件获取详细信息。