2016-06-13 32 views
8

Ben scikit-resim için bir PR göndermek için çalışıyorum, ama Travis-CI error olsun:Sorun scikit-görüntüde içe

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 

Bunun olabileceğini varsayalım döngüsel içe aktarma hatası, ancak sorunu nasıl çözeceğimi tam olarak anlamadım. Zaten includedfrangi_filter ve hessian_filter filtre modülünün __init__.py modülüne girdim.

Aynı hatalara sahip relative import, hangi resulted denedim.

Düzgün bir içe aktarmayı nasıl yapabilirim, bu nedenle döngüsel içe aktarma sorunu çözülebilir? Bu sorunu çözmek için

cevap

6

Bir çirkin kesmek Sen ithalatla her işlevi kirletmez için hessian_matrix ve hessian_matrix_eigvals için ayrı bir "vekil" işlevler oluşturmak isteyebilirsiniz

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 

gibi, işlevi içinde bu ithalat taşımak olacaktır.

+0

Bunu yapmanın tek yolu bu gibi görünüyor. Teşekkürler, takdir et! –