官方skimage库中的循环导入问题?

3

我想使用skimage运行一些基本的圆形检测,但遇到了循环导入问题。这里可能出了什么问题?

我已经尝试过这个代码:https://dev59.com/ZLbna4cB1Zd3GeqPco2Y#58124466

这段代码需要:

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

我遇到了以下错误:

  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)

我安装了什么才能正常工作?有哪些问题可能出现?


尝试同时升级numpy和skimage。 - Hamzah
它对于它们两个以及它们每个包都显示“要求已满足”。 - Farm Éva
显然它在 from unittest import TestCase 处失败了。你能否在脚本顶部添加 import unittest; print(unittest.__file__) 并查看它的输出? - user7138814
然后它会显示 ImportError: 无法从部分初始化的模块 'unittest' 导入名称 'TestCase'(很可能是由于循环导入),并在错误信息的顶部添加 line 4, in <module> import unittest - Farm Éva
1
但是在这段代码中,甚至没有使用 unittest,那么 unittestskimage 库之间有什么关系呢? - Farm Éva
1个回答

0

如果在此脚本文件所在的文件夹中有任何名为__pycache__的文件夹,则其中包含错误的脚本,您必须删除该文件夹。其中包含编译成二进制格式的Python脚本,因此您可以删除它们,而您的原始脚本仍将可用。您可以在许多地方阅读更多关于此的信息https://towardsdatascience.com/pycache-python-991424aabad8

如果在此圆形识别脚本所在的文件夹中还有其他脚本,并且其中一些脚本具有__main__部分并且其中存在错误,那么您可能已经将其编译为二进制格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接