【问题标题】:Trouble with relative / absolute functions import in scikit-image在 scikit-image 中导入相对/绝对函数的问题
【发布时间】:2016-10-13 09:08:46
【问题描述】:

我正在尝试为 scikit-image 提交 PR,但我得到了 Travis-CI error

  Traceback (most recent call last):
  File "doc/examples/edges/plot_canny.py", line 22, in <module>
    from skimage import feature
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/__init__.py", line 9, in <module>
    from .peak import peak_local_max
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/peak.py", line 3, in <module>
    from ..filters import rank_order
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/__init__.py", line 11, in <module>
    from ._frangi import frangi_filter, hessian_filter
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/_frangi.py", line 2, in <module>
    from skimage.feature import hessian_matrix, hessian_matrix_eigvals
ImportError: cannot import name hessian_matrix

我想这可能是一个循环导入错误,但我不太明白如何解决这个问题。我已经将 included frangi_filterhessian_filter 放入过滤器的模块 __init__.py

我也尝试过relative 导入,其中resulted 进入同样的错误。

如何正确导入,才能解决循环导入问题?

【问题讨论】:

    标签: python scikit-image


    【解决方案1】:

    解决这个问题的一个丑陋的方法是将导入移动到函数中,比如

    def hessian_filter(image, scale=(1, 10), scale_ratio=2, beta1=0.5, beta2=15):
        """
           Blah-blah-blah
        """
        from ..feature import hessian_matrix, hessian_matrix_eigvals
        # function body
    

    您可能希望为 hessian_matrixhessian_matrix_eigvals 创建单独的“代理”函数,以免导入污染每个函数。

    【讨论】:

    • 似乎这是唯一的方法。谢谢,不胜感激!
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2016-07-19
    • 2016-10-09
    相关资源
    最近更新 更多