在 scikit-image 中导入相对/绝对函数时出现问题
Trouble with relative / absolute functions import in scikit-image
我正在尝试提交 PR for scikit-image, but I get a 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_filter
和 hessian_filter
进入过滤器模块 __init__.py
.
我也试过 relative import, which resulted 遇到同样的错误。
如何正确导入,才能解决循环导入问题?
解决这个问题的一个丑陋的技巧是将导入移动到函数内部,比如
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_matrix
和 hessian_matrix_eigvals
创建单独的 "proxy" 函数,以免导入污染每个函数。
我正在尝试提交 PR for scikit-image, but I get a 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_filter
和 hessian_filter
进入过滤器模块 __init__.py
.
我也试过 relative import, which resulted 遇到同样的错误。
如何正确导入,才能解决循环导入问题?
解决这个问题的一个丑陋的技巧是将导入移动到函数内部,比如
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_matrix
和 hessian_matrix_eigvals
创建单独的 "proxy" 函数,以免导入污染每个函数。