NeuralEnsemble / python-neo

Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats
http://neo.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
316 stars 248 forks source link

circular import error on master branch #1065

Closed bendichter closed 2 years ago

bendichter commented 2 years ago

ImportError Traceback (most recent call last) /tmp/ipykernel_469/1217768234.py in 9 ) 10 from nwb_conversion_tools.utils.conversion_tools import get_module ---> 11 from spikeinterface.extractors import read_spikeglx, read_openephys 12 13 import pynwb

/opt/conda/lib/python3.8/site-packages/spikeinterface/extractors/init.py in ----> 1 from .extractorlist import * 2 3 from .toy_example import toy_example 4 from .bids import read_bids_folder

/opt/conda/lib/python3.8/site-packages/spikeinterface/extractors/extractorlist.py in 4 5 # sorting/recording/event from neo ----> 6 from .neoextractors import ( 7 MEArecRecordingExtractor, MEArecSortingExtractor, read_mearec, 8 SpikeGLXRecordingExtractor, read_spikeglx,

/opt/conda/lib/python3.8/site-packages/spikeinterface/extractors/neoextractors/init.py in ----> 1 from .mearec import MEArecRecordingExtractor, MEArecSortingExtractor, read_mearec 2 from .spikeglx import SpikeGLXRecordingExtractor, read_spikeglx 3 from .openephys import (OpenEphysLegacyRecordingExtractor, 4 OpenEphysBinaryRecordingExtractor, OpenEphysBinaryEventExtractor, read_openephys, 5 read_openephys_event)

/opt/conda/lib/python3.8/site-packages/spikeinterface/extractors/neoextractors/mearec.py in ----> 1 from .neobaseextractor import NeoBaseRecordingExtractor, NeoBaseSortingExtractor 2 3 import probeinterface as pi 4 5

/opt/conda/lib/python3.8/site-packages/spikeinterface/extractors/neoextractors/neobaseextractor.py in 3 BaseRecordingSegment, BaseSortingSegment, BaseEventSegment) 4 from typing import Union, List ----> 5 import neo 6 7

/opt/conda/lib/python3.8/site-packages/neo/init.py in 10 from neo.core import 11 # ~ import neo.rawio ---> 12 from neo.io import 13 14 from neo.version import version as version

/opt/conda/lib/python3.8/site-packages/neo/io/init.py in 245 from neo.io.blackrockio_v4 import BlackrockIO as OldBlackrockIO 246 from neo.io.blkio import BlkIO --> 247 from neo.io.bci2000io import BCI2000IO 248 from neo.io.brainvisionio import BrainVisionIO 249 from neo.io.brainwaredamio import BrainwareDamIO

/opt/conda/lib/python3.8/site-packages/neo/io/bci2000io.py in 1 from neo.io.basefromrawio import BaseFromRaw ----> 2 from neo.rawio.bci2000rawio import BCI2000RawIO 3 4 5 class BCI2000IO(BCI2000RawIO, BaseFromRaw):

/opt/conda/lib/python3.8/site-packages/neo/rawio/init.py in 121 from neo.rawio.intanrawio import IntanRawIO 122 from neo.rawio.micromedrawio import MicromedRawIO --> 123 from neo.rawio.neuralynxrawio.neuralynxrawio import NeuralynxRawIO 124 from neo.rawio.neuroexplorerrawio import NeuroExplorerRawIO 125 from neo.rawio.neuroscoperawio import NeuroScopeRawIO

/opt/conda/lib/python3.8/site-packages/neo/rawio/neuralynxrawio.py in 121 from neo.rawio.intanrawio import IntanRawIO 122 from neo.rawio.micromedrawio import MicromedRawIO --> 123 from neo.rawio.neuralynxrawio import NeuralynxRawIO 124 from neo.rawio.neuroexplorerrawio import NeuroExplorerRawIO 125 from neo.rawio.neuroscoperawio import NeuroScopeRawIO

ImportError: cannot import name 'NeuralynxRawIO' from partially initialized module 'neo.rawio.neuralynxrawio' (most likely due to a circular import) (/opt/conda/lib/python3.8/site-packages/neo/rawio/neuralynxrawio.py)

JuliaSprenger commented 2 years ago

Hi @bendichter! Thanks for reporting this. I can't reproduce the error on my side and think that the line numbers in the neo modules are actually not matching the current master branch. Are you sure you have a clean neo installation? It looks like this might be a master version from before May 2021 (84952cd2c588c337d8520f4833892e409b9ba00e).

JuliaSprenger commented 2 years ago

@bendichter Did you confirm the error on your side with a recent neo version?