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:无法导入名称“AFAVSignature”
ImportError:无法导入名称“评估”(来自意外导入评估)
Django 'ImportError: 无法导入名称 url'