zoukankan      html  css  js  c++  java
  • cannot import name '_validate_lengths' from 'numpy.lib.arraypad'

    在Anaconda下新配置了tensorflow环境,结果在引入skimage 包时报错,错误提示from numpy.lib.arraypad import _validate_lengths,找不到_validate_lengths函数,在arraypad.py文件中确实找不到对应的函数,所以找到以前配置过的环境中对应的文件,拷贝这个缺失的函数,问题解决(****************一定要重启环境)。

    (flappbird1) luo@luo-All-Series:~/MyFile/COCO/coco/PythonAPI$
    (flappbird1) luo@luo-All-Series:~/MyFile/COCO/coco/PythonAPI$ python
    >
    Python 3.7.2 (default, Dec 29 2018, 06:19:36)
    [GCC 7.3.0] :: Anaconda, Inc. on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    >>>
    >>>
    >>> from skimage import io
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/__init__.py", line 167, in <module>
        from .util.dtype import (img_as_float32,
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/__init__.py", line 8, in <module>
        from .arraycrop import crop
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/arraycrop.py", line 8, in <module>
        from numpy.lib.arraypad import _validate_lengths
    ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' (/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/numpy/lib/arraypad.py)
    >>>
    >>>
    >>>
    >>>
    >>> from skimage import data, io, filters
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/__init__.py", line 176, in <module>
        from .util.lookfor import lookfor
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/__init__.py", line 8, in <module>
        from .arraycrop import crop
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/arraycrop.py", line 8, in <module>
        from numpy.lib.arraypad import _validate_lengths
    ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' (/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/numpy/lib/arraypad.py)
    >>>
    >>>
    >>>
    >>>
    >>> from skimage import data, io, filters
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/__init__.py", line 176, in <module>
        from .util.lookfor import lookfor
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/__init__.py", line 8, in <module>
        from .arraycrop import crop
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/arraycrop.py", line 8, in <module>
        from numpy.lib.arraypad import _validate_lengths
    ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' (/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/numpy/lib/arraypad.py)
    >>>
    >>>
    >>>
    >>> from skimage import io
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/__init__.py", line 176, in <module>
        from .util.lookfor import lookfor
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/__init__.py", line 8, in <module>
        from .arraycrop import crop
      File "/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/skimage/util/arraycrop.py", line 8, in <module>
        from numpy.lib.arraypad import _validate_lengths
    ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' (/home/luo/anaconda3/envs/flappbird1/lib/python3.7/site-packages/numpy/lib/arraypad.py)
    >>>
    >>>
    >>>
    >>> exit()
    (flappbird1) luo@luo-All-Series:~/MyFile/COCO/coco/PythonAPI$
    (flappbird1) luo@luo-All-Series:~/MyFile/COCO/coco/PythonAPI$

    ---------------------------------------------------------------------------------------------------

    找到:Anaconda3/envs/your dir/lib/python3.7/site-packages/numpy/lib/arraypad.py   954行,添加洗下面两个函数保存,重新加载即可消除错误(****************一定要重启环境)

    --------------------------------------------------------------------------------------------------

    def _normalize_shape(ndarray, shape, cast_to_int=True):
        """
        Private function which does some checks and normalizes the possibly
        much simpler representations of 'pad_width', 'stat_length',
        'constant_values', 'end_values'.

        Parameters
        ----------
        narray : ndarray
            Input ndarray
        shape : {sequence, array_like, float, int}, optional
            The width of padding (pad_width), the number of elements on the
            edge of the narray used for statistics (stat_length), the constant
            value(s) to use when filling padded regions (constant_values), or the
            endpoint target(s) for linear ramps (end_values).
            ((before_1, after_1), ... (before_N, after_N)) unique number of
            elements for each axis where `N` is rank of `narray`.
            ((before, after),) yields same before and after constants for each
            axis.
            (constant,) or val is a shortcut for before = after = constant for
            all axes.
        cast_to_int : bool, optional
            Controls if values in ``shape`` will be rounded and cast to int
            before being returned.

        Returns
        -------
        normalized_shape : tuple of tuples
            val                               => ((val, val), (val, val), ...)
            [[val1, val2], [val3, val4], ...] => ((val1, val2), (val3, val4), ...)
            ((val1, val2), (val3, val4), ...) => no change
            [[val1, val2], ]                  => ((val1, val2), (val1, val2), ...)
            ((val1, val2), )                  => ((val1, val2), (val1, val2), ...)
            [[val ,     ], ]                  => ((val, val), (val, val), ...)
            ((val ,     ), )                  => ((val, val), (val, val), ...)

        """
        ndims = ndarray.ndim

        # Shortcut shape=None
        if shape is None:
            return ((None, None), ) * ndims

        # Convert any input `info` to a NumPy array
        shape_arr = np.asarray(shape)

        try:
            shape_arr = np.broadcast_to(shape_arr, (ndims, 2))
        except ValueError:
            fmt = "Unable to create correctly shaped tuple from %s"
            raise ValueError(fmt % (shape,))

        # Cast if necessary
        if cast_to_int is True:
            shape_arr = np.round(shape_arr).astype(int)

        # Convert list of lists to tuple of tuples
        return tuple(tuple(axis) for axis in shape_arr.tolist())


    def _validate_lengths(narray, number_elements):
        """
        Private function which does some checks and reformats pad_width and
        stat_length using _normalize_shape.

        Parameters
        ----------
        narray : ndarray
            Input ndarray
        number_elements : {sequence, int}, optional
            The width of padding (pad_width) or the number of elements on the edge
            of the narray used for statistics (stat_length).
            ((before_1, after_1), ... (before_N, after_N)) unique number of
            elements for each axis.
            ((before, after),) yields same before and after constants for each
            axis.
            (constant,) or int is a shortcut for before = after = constant for all
            axes.

        Returns
        -------
        _validate_lengths : tuple of tuples
            int                               => ((int, int), (int, int), ...)
            [[int1, int2], [int3, int4], ...] => ((int1, int2), (int3, int4), ...)
            ((int1, int2), (int3, int4), ...) => no change
            [[int1, int2], ]                  => ((int1, int2), (int1, int2), ...)
            ((int1, int2), )                  => ((int1, int2), (int1, int2), ...)
            [[int ,     ], ]                  => ((int, int), (int, int), ...)
            ((int ,     ), )                  => ((int, int), (int, int), ...)

        """
        normshp = _normalize_shape(narray, number_elements)
        for i in normshp:
            chk = [1 if x is None else x for x in i]
            chk = [1 if x >= 0 else -1 for x in chk]
            if (chk[0] < 0) or (chk[1] < 0):
                fmt = "%s cannot contain negative values."
                raise ValueError(fmt % (number_elements,))
        return normshp

    ###############################################################################
    # Public functions

  • 相关阅读:
    error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
    unity官方换装教程Character Customization 学习笔记
    python中执行os.system(),程序处于堵塞状态,debug报pydev debugger: process 11152 is connecting
    python中安装pywinauto成功,执行时报如下错误的解决办法
    jmeter之Ramp-up Period(in seconds)
    jmeter之HTTP信息管理器、正则表达式联合使用(获取登录session
    linux之crontab定时器
    python之删除指定目录指定日期下的日志文件
    python2含有中文路径报错解决办法[xe4xbfxa1xe6x81xaf]
    性能测试之指标参考标准
  • 原文地址:https://www.cnblogs.com/herd/p/10270601.html
Copyright © 2011-2022 走看看