Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 日志 › 开发日志:解决Windows平台无法使用Metview解析数据的难题

开发日志:解决Windows平台无法使用Metview解析数据的难题

Eswlnk的头像
Eswlnk
2025-03-06 18:18:52
开发日志:解决Windows平台无法使用Metview解析数据的难题-Eswlnk Blog
智能摘要 AI
本文介绍了在Windows 11环境下通过WSL2安装并使用Metview工具解析欧洲中期天气预报中心(ECMWF)数据的过程。由于Metview在Windows下无法直接运行,作者选择了在WSL2中安装Ubuntu 24.04并通过Homebrew安装Metview。解决了动态链接库缺失的问题后,成功将Metview与Python环境绑定。关键步骤包括设置`METVIEW_PYTHON_START_CMD`环境变量以指定Metview的启动路径,并创建虚拟环境以确保依赖包的正确安装。最终,通过IDEA配置远程SDK完成开发环境搭建。

0x00 前言

最近需要解析欧洲中期天气预报中心(ECMWF)的相关数据,在查阅相关文档时,发现有现成的Metview工具可用,并且可以直接解析ECMWF的数据集。相关显示如下图所示:

开发日志:解决Windows平台无法使用Metview解析数据的难题-Eswlnk Blog

0x01 问题

“On Windows, signal() can only be called with SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, or SIGTERM. A ValueError will be raised in any other case.”

在idea中运行测试程序显示以上,本以为全网搜索一下该问题的解决办法,但是得到的答案只有尝试使用conda进行二进制文件编译,对python下的metview包重新安装。

Could not run the Metview executable (‘metview’); check that the binaries for Metview (version 5 at least) are installed and are in the PATH.

倒腾了一番后,最后还是显示以上,没办法,只有去看看metview的代码接口是怎么编写。

0x02 metview接口源码

try:
    ffi = cffi.FFI()
    ffi.cdef(pkgutil.get_data("metview", "metview.h").decode("ascii"))
    mv_lib = mi.info("METVIEW_LIB")
    # is there a more general way to add to a path to a list of paths?
    os.environ["LD_LIBRARY_PATH"] = mv_lib + ":" + os.environ.get("LD_LIBRARY_PATH", "")

    try:
        # Linux / Unix systems
        lib = ffi.dlopen(os.path.join(mv_lib, "libMvMacro.so"))
    except OSError:
        # MacOS systems
        lib = ffi.dlopen(os.path.join(mv_lib, "libMvMacro"))

except Exception as exp:  # pragma: no cover
    print(
        "Error loading Metview/libMvMacro. LD_LIBRARY_PATH="
        + os.environ.get("LD_LIBRARY_PATH", "")
    )
    raise exp

我们从以上代码可以看出,它只对Linux / Unix 和 MacOS进行了处理,没有windows系统的环境要求,爆炸,没办法,那就本地开一个WSL2吧!当然,如果用VM开一个linux的虚拟机也可以。

0x03 寻找答案

如果在Windows系统下直接进行安装:

conda install metview  -c conda-forge
pip install metview

以上是一个错误的示范,因为官网上还有一行字:

开发日志:解决Windows平台无法使用Metview解析数据的难题-Eswlnk Blog

该软件无法在windows下运行,OK,我们在开启win11(非WIN11可能无法开启)的WSL2功能后,使用ubuntu24.04这个镜像,导入开机。

按照常规来讲,其实可以直接使用以下命令来直接安装编译好的metview版本:

sudo apt install metview

但是问题来了,这个编译好后的二进制文件里,貌似没有相关的动态链接库,会显示以下报错:

Error loading Metview/libMvMacro. LD_LIBRARY_PATH=

0x04 最终答案

那么,我们只能通过brew这个包管理工具来安装metview。这里metview官方也是会在brew上维护这个软件,所以不存在什么兼不兼容的问题。

brew install metview

OK,在经过漫长的等待后,我们终于安装成功,并且成功将python环境和metview绑定:

开发日志:解决Windows平台无法使用Metview解析数据的难题-Eswlnk Blog

由于我们是使用brew进行安装的,所以metview的目录会和正常目录有所不同,需要在执行python文件时手动指定环境变量,这也是一个坑。最后我们在阅读python的metview的源代码后成功解决:

        signal.signal(signal.SIGUSR1, self.signal_from_metview)
        # p = subprocess.Popen(['metview', '-edbg', 'tv8 -a', '-slog', '-python-serve',
        #     env_file.name, str(pid)], stdout=subprocess.PIPE)
        metview_startup_cmd = os.environ.get("METVIEW_PYTHON_START_CMD", "metview")
        metview_flags = [
            metview_startup_cmd,
            "-nocreatehome",
            "-python-serve",
            env_file.name,
            str(pid),
        ]

METVIEW_PYTHON_START_CMD,OK,指定这个变量即可,例如我这里是:os.environ['METVIEW_PYTHON_START_CMD'] = '/home/linuxbrew/.linuxbrew/bin/metview'

GOOD,完美解决所有问题!

0x05 总结

本次测试环境如下列表:

宿主机Windows 11 23H2
WSL2Ubuntu 24.02

IEDA配置远程SDK,如下图所示:

开发日志:解决Windows平台无法使用Metview解析数据的难题-Eswlnk Blog

注意,这里我是创建了一个.venv即虚拟环境,否则无法安装相应的包,通过以下命令处理。收工!

python3 -m venv path/to/venv
source path/to/venv/bin/activate
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
linuxpython审阅日志源码
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
主题改造计划:手动模块化网站首页
上一篇
研究日志:ERA5-Land数据解析问题
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「日志」IG无缘S15总决赛
  • 来自谷歌27岁的生日涂鸦
  • 事件记录:国内网络故障情况
  • 科研记录:ecCodes处理grib文件问题
  • 本站上线邀请码免费兑换系统
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「事件记录」某fans网站可国内直连
2024-11-30 19:01:26
除夕夜!
2023-01-21 20:30:25
开发日志:HotSpot AI 热点创作 兼容WordPress经典编辑器
2023-04-22 2:10:09

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.972 秒   |  SQL查询 26 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈