导入错误:无法导入名称'_validate_lengths'

76

我已开始学习Tensorflow。我正在使用Pycharm,我的环境是Ubuntu 16.04。我在跟随教程。我检查了nump,它是最新的。我不知道这个错误的原因。

from numpy.lib.arraypad import _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]

4
请查看 https://github.com/scikit-image/scikit-image/issues/3586。 - cdarke
7个回答

114

我更新了我的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

5

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。 - Yogesh Awdhut Gadade

4

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

参考:这里


2
我遇到了相同的错误,我采取了以下步骤:
卸载scikit-image
pip uninstall scikit-image

或者

conda uninstall scikit-image

然后

pip install scikit-image

或者

conda install -c conda-forge scikit-image

在按照上述步骤后出现以下错误:ImportError: 无法导入名称为 'img_as_float32' 的模块。使用的 Numpy 版本为 1.17.0,skimage 版本为 0.13.0,Python 3。 - Yogesh Awdhut Gadade
如果您正在使用Jupyter笔记本,请不要忘记添加--y参数,例如!conda uninstall scikit-image --y或!conda install -c conda-forge scikit-image --y。 - Ivan

1
对我来说,这个神奇的依赖项是:
pip install scikit-image==0.13.1
pip install numpy==1.15

适用于Python 3.5和Python 3.6


0

-1

看起来我也因为同时安装了两个版本而遇到了同样的问题。

我通过多次卸载 scikit-image 直到全部卸载干净解决了这个问题。

pip uninstall scikit-image

然后重新安装:

pip uninstall scikit-image

它对我起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接