You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下PyPy 3.7安装ephem包出现ob_base相关gcc编译失败错误

PyPy3.7环境安装ephem包编译报错解决方案

报错原因

该编译错误是旧版本ephem的C扩展代码与PyPy的Python对象头定义不兼容导致的:
旧版ephem的宏定义OB_TYPE默认调用了CPython特有的ob_base结构体成员,但PyPy的头文件中自定义对象的结构体没有该成员,因此gcc编译时直接抛出成员不存在的错误,不属于依赖缺失问题。

解决方案

  • 方案1:安装新版兼容ephem(推荐)
    最新版ephem已经官方修复了PyPy兼容性问题,直接执行以下命令安装即可:
    pypy3 -m pip install --upgrade ephem
    
  • 方案2:手动修改旧版源码适配
    如果你有版本要求必须使用旧版ephem,可手动修改源码编译:
    1. 下载对应版本的ephem源码包:
    pypy3 -m pip download ephem==<你的目标版本号>
    
    1. 解压源码包后,找到extensions/_libastro.c文件打开
    2. 将第20行的代码#define OB_TYPE ob_base.ob_type替换为#define OB_TYPE ob_type
    3. 保存后在源码根目录执行手动安装:
    pypy3 -m pip install .
    
  • 方案3:使用纯Python替代库
    如果你不想修改源码,也可以改用纯Python实现的天文计算库skyfield,功能与ephem对齐,原生支持PyPy无需编译,安装命令:
    pypy3 -m pip install skyfield
    

内容的提问来源于stack exchange,提问作者enesgur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:45:00