在finditer中的文件“ E:\ python \ lib \ re.py”,第229行,返回_compile(pattern,flags).finditer(string)TypeError:预期的字符串或类似字节的对象

时间:2018-09-09 08:50:41

标签: python python-3.x numpy sublimetext3 scikit-image

我正在使用skimage.feature.greycomatrix来计算图像的GLCM(灰度共生矩阵),但是当我使用时:

from skimage.feature import greycomatrix 

python 3.6.4 shell中-它起作用。 See image

但是当我在Sublime Text 3中使用它时, 它将报告错误:

Traceback (most recent call last):
  File "C:\Users\Martin Ma\Desktop\every day python\test\GLCM\main.py", line 80, in <module>
    from skimage.feature import greycomatrix
  File "E:\python\lib\site-packages\skimage\feature\__init__.py", line 9, in <module>
    from .peak import peak_local_max
  File "E:\python\lib\site-packages\skimage\feature\peak.py", line 3, in <module>
    from ..segmentation import relabel_sequential
  File "E:\python\lib\site-packages\skimage\segmentation\__init__.py", line 1, in <module>
    from .random_walker_segmentation import random_walker
  File "E:\python\lib\site-packages\skimage\segmentation\random_walker_segmentation.py", line 43, in <module>
    from ..filters import rank_order
  File "E:\python\lib\site-packages\skimage\filters\__init__.py", line 3, in <module>
    from .edges import (sobel, sobel_h, sobel_v,
  File "E:\python\lib\site-packages\skimage\filters\edges.py", line 17, in <module>
    from ..restoration.uft import laplacian
  File "E:\python\lib\site-packages\skimage\restoration\__init__.py", line 12, in <module>
    from .inpaint import inpaint_biharmonic
  File "E:\python\lib\site-packages\skimage\restoration\inpaint.py", line 9, in <module>
    from ..measure import label
  File "E:\python\lib\site-packages\skimage\measure\__init__.py", line 6, in <module>
    from ._regionprops import regionprops, perimeter
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 645, in <module>
    _install_properties_docs()
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 632, in _install_properties_docs
    prop_doc = _parse_docs()
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 625, in _parse_docs
    doc, flags=re.DOTALL)
  File "E:\python\lib\re.py", line 229, in finditer
    return _compile(pattern, flags).finditer(string)
TypeError: expected string or bytes-like object

(See picture of Sublime Text error)

有人可以告诉我为什么会发生这种情况以及如何解决吗?

我的代码:

from skimage.feature import greycomatrix
import numpy as np 

image=np.array([[1,1,5,6,8],
                [0,0,5,7,1],
                [4,0,0,1,2],
                [8,5,1,2,5]],dtype=np.uint8)
#levels=256   image   this test is 9
result=greycomatrix(image,[1],[0,np.pi/4,np.pi/2,3*np.pi/4],levels=9)
print(result[:, :, 0, 0])

enter image description here

1 个答案:

答案 0 :(得分:4)

您正在运行带有-OO标志的Python,该标志会丢弃文档字符串,而将其替换为Noneskimage.measure._regionprops includes code,它在初始化期间解析一个函数的文档字符串,以设置其他函数的文档字符串。当文档字符串已被丢弃时,此操作将失败。在没有-OO标志的情况下运行Python可以避免此问题。

看来scikit-image代码库的其他部分可能已经遇到并解决了类似的问题;我看到一些已经检查过将文档字符串设置为None的地方,例如skimage.io中。为了使skimage.measure._regionprops-OO兼容,必须向该模块添加对None文档字符串的类似检查。 _install_properties_docs不仅可以处理文档字符串,因此,如果我们没有文档字符串,我们就不能跳过整个过程。