导入astropy.coordinates.representation时出现循环导入错误求助
astropy循环导入错误排查与解决
在Jupyter Notebook中尝试导入astropy.coordinates.representation时出现循环导入错误,具体报错如下:
ImportError: cannot import name 'SphericalRepresentation' from partially initialized module 'astropy.coordinates.representation' (most likely due to a circular import) (C:\Users\konto\anaconda3\lib\site-packages\astropy\coordinates\representation\__init__.py)
最初是执行以下导入specutils的代码时触发该错误,后续在空白Notebook中单独导入astropy.coordinates.representation也会出现相同问题,且已确认所有库均为最新版本。
导入代码:
from astropy.io import fits from astropy import units as u import numpy as np import plotly.express as px #spectra utilities from specutils import Spectrum1D,SpectralRegion from specutils.analysis import equivalent_width
更新:尚未找到问题根源,但在实验室环境使用以下版本库时可正常完成导入:
- astropy 5.3.4
- specutils 1.11.0
- numpy 1.23.5
- plotly 5.18.0
完整回溯信息:
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) Cell In[1], line 8 5 import plotly.express as px 7 #spectra utilities ----> 8 from specutils import Spectrum1D,SpectralRegion 9 from specutils.analysis import equivalent_width File ~\AppData\Roaming\Python\Python310\site-packages\specutils\__init__.py:23 19 test.__test__ = False 22 # Allow loading spectrum object from top level module ---> 23 from .spectra import * # noqa 25 # Load the IO functions 26 from .io.default_loaders import * # noqa File ~\AppData\Roaming\Python\Python310\site-packages\specutils\spectra\__init__.py:5 1 """ 2 The core specutils data objects package. This contains the 3 `~astropy.nddata.NDData`-inherited classes used for storing the spectrum data. 4 """ ----> 5 from .spectrum1d import * # noqa 6 from .spectral_region import * # noqa 7 from .spectrum_collection import * # noqa File ~\AppData\Roaming\Python\Python310\site-packages\specutils\spectra\spectrum1d.py:8 6 from astropy.utils.decorators import lazyproperty 7 from astropy.utils.decorators import deprecated ----> 8 from astropy.nddata import NDUncertainty, NDIOMixin, NDArithmeticMixin 10 from .spectral_axis import SpectralAxis 11 from .spectrum_mixin import OneDSpectrumMixin File ~\anaconda3\lib\site-packages\astropy\nddata\__init__.py:14 11 from astropy import config as _config 13 from .bitmask import * ---> 14 from .blocks import * 15 from .ccddata import * 16 from .compat import * File ~\anaconda3\lib\site-packages\astropy\nddata\blocks.py:8 2 """ 3 This module includes helper functions for array operations. 4 """ 6 import numpy as np ----> 8 from .decorators import support_nddata 10 __all__ = ["reshape_as_blocks", "block_reduce", "block_replicate"] 13 def _process_block_inputs(data, block_size): File ~\anaconda3\lib\site-packages\astropy\nddata\decorators.py:12 8 from itertools import islice 10 from astropy.utils.exceptions import AstropyUserWarning ---> 12 from .nddata import NDData 14 __all__ = ["support_nddata"] 17 # All supported properties are optional except "data" which is mandatory! File ~\anaconda3\lib\site-packages\astropy\nddata\nddata.py:13 11 from astropy.utils.masked import Masked, MaskedNDArray 12 from astropy.utils.metadata import MetaData ---> 13 from astropy.wcs.wcsapi import SlicedLowLevelWCS # noqa: F401 14 from astropy.wcs.wcsapi import BaseHighLevelWCS, BaseLowLevelWCS, HighLevelWCSWrapper 16 from .nddata_base import NDDataBase File ~\anaconda3\lib\site-packages\astropy\wcs\__init__.py:27 1 # Licensed under a 3-clause BSD style license - see LICENSE.rst 2 """World Coordinate System (WCS) transformations in FITS files. 3 4 .. _wcslib: https://www.atnf.csiro.au/people/mcalabre/WCS/wcslib/index.html (...) 24 a standard pipeline. 25 """ ---> 27 from . import utils 28 from .wcs import * 29 from .wcs import InvalidTabularParametersError # just for docs File ~\anaconda3\lib\site-packages\astropy\wcs\utils.py:8 5 import numpy as np 7 import astropy.units as u ----> 8 from astropy.coordinates import ITRS, CartesianRepresentation, SphericalRepresentation 9 from astropy.utils import unbroadcast 11 from .wcs import WCS, WCSSUB_LATITUDE, WCSSUB_LONGITUDE File ~\anaconda3\lib\site-packages\astropy\coordinates\__init__.py:9 1 # Licensed under a 3-clause BSD style license - see LICENSE.rst 3 """ 4 This subpackage contains classes and functions for celestial coordinates 5 of astronomical objects. It also contains a framework for conversions 6 between coordinate systems. 7 """ ---> 9 from .angle_utilities import * 10 from .angles import * 11 from .attributes import * File ~\anaconda3\lib\site-packages\astropy\coordinates\angle_utilities.py:21 19 # Astropy 20 import astropy.units as u ---> 21 from astropy.coordinates.representation import ( 22 SphericalRepresentation, 23 UnitSphericalRepresentation, 24 ) 26 _TWOPI = 2 * np.pi 29 def angular_separation(lon1, lat1, lon2, lat2): File ~\anaconda3\lib\site-packages\astropy\coordinates\representation\__init__.py:6 1 """ 2 In this module, we define the coordinate representation classes, which are 3 used to represent low-level cartesian, spherical, cylindrical, and other 4 coordinates. 5 """ ---> 6 from .base import BaseDifferential, BaseRepresentation, BaseRepresentationOrDifferential 7 from .cartesian import CartesianDifferential, CartesianRepresentation 8 from .cylindrical import CylindricalDifferential, CylindricalRepresentation File ~\anaconda3\lib\site-packages\astropy\coordinates\representation\base.py:12 9 import numpy as np 11 import astropy.units as u ---> 12 from astropy.coordinates.angles import Angle 13 from astropy.utils import ShapedLikeNDArray, classproperty 14 from astropy.utils.data_info import MixinInfo File ~\anaconda3\lib\site-packages\astropy\coordinates\angles\__init__.py:11 9 from .core import * 10 from .errors import * ---> 11 from .utils import * 13 # isort: split 14 from . import core as _core File ~\anaconda3\lib\site-packages\astropy\coordinates\angles\utils.py:21 19 # Astropy 20 import astropy.units as u ---> 21 from astropy.coordinates.representation import ( 22 SphericalRepresentation, 23 UnitSphericalRepresentation, 24 ) 26 _TWOPI = 2 * np.pi 29 def angular_separation(lon1, lat1, lon2, lat2): ImportError: cannot import name 'SphericalRepresentation' from partially initialized module 'astropy.coordinates.representation' (most likely due to a circular import) (C:\Users\konto\anaconda3\lib\site-packages\astropy\coordinates\representation\__init__.py)
解决方案建议
- 降级到兼容版本:直接安装实验室验证过的稳定版本:
若使用Anaconda环境,优先用conda安装避免依赖冲突:pip install astropy==5.3.4 specutils==1.11.0 numpy==1.23.5 plotly==5.18.0conda install astropy=5.3.4 specutils=1.11.0 numpy=1.23.5 plotly=5.18.0 - 统一环境包路径:从回溯信息可见,
specutils安装在用户目录,astropy在Anaconda目录,版本可能不匹配。卸载用户目录下的specutils,再在Anaconda环境重新安装:pip uninstall specutils - 清理缓存重装:若降级后仍有问题,清理Python缓存并强制重装:
pip cache purge pip install --force-reinstall astropy==5.3.4 specutils==1.11.0 numpy==1.23.5 plotly==5.18.0
内容的提问来源于stack exchange,提问作者Konstantinos Topaloglou
相关产品推荐
相关产品推荐

