ImportError:无法导入名称“_validate_lengths”

Posted

技术标签:

【中文标题】ImportError:无法导入名称“_validate_lengths”【英文标题】:ImportError: cannot import name '_validate_lengths' 【发布时间】:2019-06-11 23:11:00 【问题描述】:

我已经开始学习 TensorFlow。我正在使用 Pycharm,我的环境是 Ubuntu 16.04。我正在关注tutorial。我交叉检查了num。它是最新的。我不知道这个错误的原因。

从 numpy.lib.arraypad 导入 _validate_lengths

ImportError: 无法导入名称 '_validate_lengths'

需要提示来解决此错误。谢谢。

import tensorflow as tf
from skimage import transform
from skimage import data
import matplotlib.pyplot as plt
import os
import numpy as np
from skimage.color import rgb2gray
import random

#listdir: This method returns a list containing the names of the entries in the directory given by path.
# Return True if path is an existing directory

def load_data(data_dir):
    # Get all subdirectories of data_dir. Each represents a label.
    directories = [d for d in os.listdir(data_dir)
                   if os.path.isdir(os.path.join(data_dir, d))]
    # Loop through the label directories and collect the data in
    # two lists, labels and images.
    labels = []
    images = []
    for d in directories:
        label_dir = os.path.join(data_dir, d)
        file_names = [os.path.join(label_dir, f)
                      for f in os.listdir(label_dir)
                      if f.endswith(".ppm")]
        for f in file_names:
            images.append(data.imread(f))
            labels.append(int(d))
    return images, labels


ROOT_PATH = "/home/tahir/PhD Study/Traffic Signs Using Tensorflow/"
train_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Training")
test_data_dir = os.path.join(ROOT_PATH, "TrafficSigns/Testing")

images, labels = load_data(train_data_dir)

# Print the `images` dimensions
print(images.ndim)

# Print the number of `images`'s elements
print(images.size)

# Print the first instance of `images`
images[0]

【问题讨论】:

看看github.com/scikit-image/scikit-image/issues/3586 【参考方案1】:

我更新了我的 skimage 包。

pip install --upgrade scikit-image

问题就解决了。是Skimage版本问题,0.14.2解决。另外,这个版本相当稳定。

    Installing collected packages: dask, scikit-image
  Found existing installation: dask 0.19.1
    Uninstalling dask-0.19.1:
      Successfully uninstalled dask-0.19.1
  Found existing installation: scikit-image 0.13.0
    Uninstalling scikit-image-0.13.0:
      Successfully uninstalled scikit-image-0.13.0
Successfully installed dask-1.0.0 scikit-image-0.14.2

【讨论】:

【参考方案2】:

scikit-image 0.14.2 与 numpy 1.16.3 一起使用。我先安装了numpy,然后安装了scikit image

【讨论】:

现在之前的错误消失了,但出现了这个新错误:得到这个错误 ImportError: cannot import name 'img_as_float32'。使用 Numpy 版本:1.17.0 & skimage:0.13.0【参考方案3】:

pip install scikit-image==0.14.2 && pip install numpy==1.15

参考:Here

【讨论】:

【参考方案4】:

我遇到了同样的错误,我做了以下步骤:

卸载 scikit-image

pip uninstall scikit-image

conda uninstall scikit-image

然后

pip install scikit-image

conda install -c conda-forge scikit-image

【讨论】:

按照上述步骤后得到此错误:ImportError: cannot import name 'img_as_float32'。使用 Numpy 版本:1.17.0 & skimage:0.13.0,Python 3 如果你在 jupyter notebook 中,不要忘记添加 --y 参数,比如 !conda uninstall scikit-image --y 或 !conda install -c conda-forge scikit-image - -y【参考方案5】:

对我来说,神奇的依赖是:

pip install scikit-image==0.13.1
pip install numpy==1.15

对于 python 3.5 和 python 3.6

【讨论】:

【参考方案6】:

将 scikit-image 升级到最新版本,或者 将 NumPy 降级到 1.15。

 pip install -U scikit-image

 pip install numpy==1.15

如果 pip 不是最新的。你可能需要这个:

python -m pip install --upgrade pip

参考Getting ImportError: cannot import name '_validate_lengths' #3906。

【讨论】:

【参考方案7】:

由于同时安装了两个版本,我似乎也遇到了同样的问题。

我通过多次卸载 scikit-image 直到没有留下任何东西来解决它。

pip uninstall scikit-image

然后重新安装:

pip uninstall scikit-image

它对我有用。

【讨论】:

以上是关于ImportError:无法导入名称“_validate_lengths”的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:无法导入名称“WebClient”

ImportError:无法导入名称“AFAVSignature”

ImportError:无法导入名称“评估”(来自意外导入评估)

Django 'ImportError: 无法导入名称 url'

ImportError:导入 PCA 时无法导入名称“LatentDirichletAllocation”[关闭]

如何修复“ImportError:无法导入名称'StringIO'”