circular import in official skimage libraries?

Question:

I want to run some basic circle detection with skimage, but I’ve got circular import. What can be the problem here?

I’ve tried the code from here: https://stackoverflow.com/a/58124466/7973735

This code needs

import cv2
import numpy as np
from skimage.feature import peak_local_max
from skimage.segmentation import watershed
from scipy import ndimage

And I’ve got these errors:

  File "C:Usersmyfilecircle_recognition.py", line 7, in <module>
    from skimage.feature import peak_local_max
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagefeature__init__.py", line 4, in <module>
    from ._cascade import Cascade
  File "skimagefeature_cascade.pyx", line 20, in init skimage.feature._cascade
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagetransform__init__.py", line 4, in <module>
    from .radon_transform import (radon, iradon, iradon_sart,
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagetransformradon_transform.py", line 6, in <module>
    from ._warps import warp
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagetransform_warps.py", line 9, in <module>
    from ..measure import block_reduce
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagemeasure__init__.py", line 6, in <module>
    from ._polygon import approximate_polygon, subdivide_polygon
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagemeasure_polygon.py", line 2, in <module>
    from scipy import signal
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipy__init__.py", line 211, in __getattr__
    return _importlib.import_module(f'scipy.{name}')
  File "C:UsersmeAppDataLocalProgramsPythonPython310libimportlib__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipysignal__init__.py", line 323, in <module>
    from ._filter_design import *
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipysignal_filter_design.py", line 16, in <module>
    from scipy import special, optimize, fft as sp_fft
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipy__init__.py", line 211, in __getattr__
    return _importlib.import_module(f'scipy.{name}')
  File "C:UsersmeAppDataLocalProgramsPythonPython310libimportlib__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipyoptimize__init__.py", line 401, in <module>
    from ._minimize import *
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipyoptimize_minimize.py", line 26, in <module>
    from ._trustregion_constr import _minimize_trustregion_constr
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipyoptimize_trustregion_constr__init__.py", line 4, in <module>
    from .minimize_trustregion_constr import _minimize_trustregion_constr
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipyoptimize_trustregion_constrminimize_trustregion_constr.py", line 5, in <module>
    from .._constraints import (
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesscipyoptimize_constraints.py", line 8, in <module>
    from numpy.testing import suppress_warnings
  File "C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesnumpytesting__init__.py", line 8, in <module>
    from unittest import TestCase
ImportError: cannot import name 'peak_local_max' from partially initialized module 'skimage.feature' (most likely due to a circular import) (C:UsersmeAppDataLocalProgramsPythonPython310libsite-packagesskimagefeature__init__.py)

What can be wrong what should I install to work fine?

Asked By: Farm Éva

||

Answers:

If in the folder where this script file is are any __pycache__ named folder then inside that one is the wrong script, and you have to delete that folder. Inside of it are compiled Python scripts in binary format, so you can delete them and your original scripts will still be available. You can read more about this in many places https://towardsdatascience.com/pycache-python-991424aabad8

This can happen if in your folder where this circle recognition script is, are other scripts too and some of them had a __main__ part and it had a bug inside of it and you somehow compiled it to binary format.

Answered By: Korte Alma