2016-06-13 20 views
8

Próbuję złożyć PR dla scikit wizerunku, ale pojawia się Travis-ci error:Kłopoty z funkcji względne/bezwzględne importować w scikit wizerunku

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 

Przypuszczam, że to może być okrągły błąd importu, ale nie wiem, jak rozwiązać ten problem. Mam już includedfrangi_filter i hessian_filter do modułu filtra __init__.py.

Próbowałem również importować relative, który resulted do tych samych błędów.

Jak zrobić prawidłowy import, aby można było rozwiązać problem z okrężnym importem?

Odpowiedz

6

Jeden brzydki hack, aby rozwiązać ten problem byłoby przenieść ten import wewnątrz funkcji, jak

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 

może chcesz stworzyć odrębne funkcje „proxy” dla hessian_matrix i hessian_matrix_eigvals aby nie zanieczyszczać każdą funkcję z importu.

+0

Wygląda na to, że jest to jedyny sposób, aby to zrobić. Dzięki, doceń! –