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:\Users\myfile\circle_recognition.py", line 7, in <module>
from skimage.feature import peak_local_max
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\feature\__init__.py", line 4, in <module>
from ._cascade import Cascade
File "skimage\feature\_cascade.pyx", line 20, in init skimage.feature._cascade
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\transform\__init__.py", line 4, in <module>
from .radon_transform import (radon, iradon, iradon_sart,
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\transform\radon_transform.py", line 6, in <module>
from ._warps import warp
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\transform\_warps.py", line 9, in <module>
from ..measure import block_reduce
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\measure\__init__.py", line 6, in <module>
from ._polygon import approximate_polygon, subdivide_polygon
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\measure\_polygon.py", line 2, in <module>
from scipy import signal
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\__init__.py", line 211, in __getattr__
return _importlib.import_module(f'scipy.{name}')
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\signal\__init__.py", line 323, in <module>
from ._filter_design import *
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\signal\_filter_design.py", line 16, in <module>
from scipy import special, optimize, fft as sp_fft
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\__init__.py", line 211, in __getattr__
return _importlib.import_module(f'scipy.{name}')
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\optimize\__init__.py", line 401, in <module>
from ._minimize import *
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\optimize\_minimize.py", line 26, in <module>
from ._trustregion_constr import _minimize_trustregion_constr
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\optimize\_trustregion_constr\__init__.py", line 4, in <module>
from .minimize_trustregion_constr import _minimize_trustregion_constr
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\optimize\_trustregion_constr\minimize_trustregion_constr.py", line 5, in <module>
from .._constraints import (
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\optimize\_constraints.py", line 8, in <module>
from numpy.testing import suppress_warnings
File "C:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy\testing\__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:\Users\me\AppData\Local\Programs\Python\Python310\lib\site-packages\skimage\feature\__init__.py)
What can be wrong what should I install to work fine?
CodePudding user response:
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.