导入lightkurve 2.4.0失败:astropy模块ConstantMeta报错求助
Lightkurve 2.4.0导入失败排查(Astropy内部错误)
问题描述
导入lightkurve 2.4.0时触发Astropy内部错误,核心报错信息为:
TypeError: 'ConstantMeta' object is not iterable
完整报错栈:
/Users/yair1/PycharmProjects/TESSLC/venv/bin/python /Users/yair1/PycharmProjects/TESSLC/main.py Traceback (most recent call last): File "/Users/yair1/PycharmProjects/TESSLC/main.py", line 8, in <module> import lightkurve as lk File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/lightkurve/__init__.py", line 105, in <module> from . import units # enable ppt and ppm as units File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/lightkurve/units.py", line 2, in <module> from astropy import units as u File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/units/__init__.py", line 25, in <module> from . import astrophys, cgs, misc, photometric, si File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/units/astrophys.py", line 9, in <module> from astropy.constants import si as _si File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/__init__.py", line 26, in <module> from . import cgs, si File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/cgs.py", line 8, in <module> from .config import codata, iaudata File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/config.py", line 14, in <module> codata = importlib.import_module(".constants." + phys_version, "astropy") File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/codata2018.py", line 8, in <module> from .constant import Constant, EMConstant File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/constant.py", line 265, in <module> class EMConstant(Constant): File "/Users/yair1/PycharmProjects/TESSLC/venv/lib/python3.10/site-packages/astropy/constants/constant.py", line 88, in __new__ return super().__new__(mcls, name, bases, d) TypeError: 'ConstantMeta' object is not iterable Process finished with exit code 1
问题原因
该错误源于Astropy版本与Python 3.10不兼容,或虚拟环境中Astropy包损坏、版本不符合lightkurve 2.4.0的依赖要求。Lightkurve 2.4.0对Astropy的依赖范围是astropy>=4.3,!=5.0,!=5.0.1,若环境中Astropy版本超出此范围,或安装过程中包文件损坏,会触发元类处理的底层bug。
解决方法
1. 重新安装兼容版本的Astropy
先卸载现有Astropy,再安装符合要求的版本:
# 卸载旧版本 pip uninstall astropy -y # 安装lightkurve 2.4.0兼容的Astropy版本 pip install astropy==5.0.4
或自动升级到最新兼容版本:
pip install astropy --upgrade
2. 重建干净的虚拟环境
若虚拟环境存在包冲突或损坏,直接重建环境:
# 删除旧虚拟环境 rm -rf /Users/yair1/PycharmProjects/TESSLC/venv # 创建新的Python3.10虚拟环境 python3.10 -m venv /Users/yair1/PycharmProjects/TESSLC/venv # 激活环境 source /Users/yair1/PycharmProjects/TESSLC/venv/bin/activate # 安装lightkurve 2.4.0,自动拉取所有兼容依赖 pip install lightkurve==2.4.0
3. 验证版本兼容性
检查当前环境的Astropy版本,确认其符合依赖要求:
pip list | grep astropy
若版本不在>=4.3,!=5.0,!=5.0.1范围内,执行方法1调整版本。
内容的提问来源于stack exchange,提问作者Yair J
相关产品推荐
相关产品推荐

