【问题标题】:Unable to import with original code "tensorflow.python.keras.utils.data_utils"无法使用原始代码“tensorflow.python.keras.utils.data_utils”导入
【发布时间】:2020-02-08 23:19:27
【问题描述】:

我从事 Java 多年,现在我正在使用 Tensorflow 2.0 学习 Python

开发工具为Eclipse+PyDev。在 Python 中使用 from...import 语句有一点问题。

我创建了一个测试文件local_fashion_mnist.py,从以下位置复制内容并粘贴到local_fashion_mnist.py

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/datasets/fashion_mnist.py

从 __future__ 导入 absolute_import 从 __future__ 进口部门 从 __future__ 导入 print_function 导入 gzip 导入操作系统 将 numpy 导入为 np 从 tensorflow.python.keras.utils.data_utils 导入 get_file 从 tensorflow.python.util.tf_export 导入 keras_export ...

但是 Eclipse 显示错误:Unresolved import: get_file

如果我将代码更改如下:

... 从 tensorflow_core.python.keras.utils.data_utils 导入 get_file 从 tensorflow_core.python.util.tf_export 导入 keras_export ...

那么代码就没有问题了。

我的问题是:

1)。为什么我需要将代码从 "tensorflow.python.keras.utils.data_utils" 更改为 "tensorflow_core.python.keras.utils.data_utils"

2)。我可以只使用我代码中的原始 "tensorflow.python.keras.utils.data_utils" 吗?需要什么配置?

谢谢。

【问题讨论】:

  • 你是如何安装 Tensorflow 的?您使用的是什么操作系统?
  • 我从下载的 wheel 文件中安装 Tensorflow:tensorflow-2.0.0-cp36-cp36m-manylinux2010_x86_64.whl。操作系统是 Ubuntu 18.04
  • 如果我理解正确,您手动下载了一个文件并安装了类似sudo pip install ./path/to/tensorflow-2.0.0-cp36-cp36m-manylinux2010_x86_64.whl?以sudo 特权运行pip install 并不是一个好的做法。我们可能会尝试在 virtualenv 中再次安装它 - 这是一个 Python 工具,用于分离每个项目的软件包安装,而不是在系统范围内。

标签: python python-3.x tensorflow


【解决方案1】:

tensorflow_core 是一个实现细节,不能直接使用 - source

我认为你的安装有问题,所以让我们再次尝试安装 Tensorflow,这次使用 virtualenv(这在 Python 世界中被认为是一种很好的做法)。

  1. 卸载现有版本(如果您使用sudo 安装Tensorflow,则可能需要在命令前加上sudo
pip uninstall tensorflow
  1. 为您的项目创建一个virtualenvvirtualenv 允许您为每个项目安装依赖项,而不会干扰系统包或其他项目。想了解更多,请参考docs
cd /path/to/your/project
python3 -m venv venv # create a virtualenv named `venv` in your project directory
source ./venv/bin/activate # activate just created virtualenv

您现在可以在此终端窗口中检查,您将使用本地 Python 版本。要检查您是否可以运行:

which python
# should output something like: /path/to/your/project/venv/bin/python
# running this command outside virtualenv will give use something like: /usr/bin/python

要退出 virtualenv,您可以简单地运行 deactivate 命令。要再次激活 virtualenv,您可以运行前面提到的命令:source ./venv/bin/activate

激活您的 virtualenv

  1. 更新 pip - Python 包管理器:
pip install --upgrade pip
  1. 现在您终于可以安装 Tensorflow了:
pip install tensorflow
  1. 验证安装是否正常:
python # you'll enter REPL, an interactive Python command line
>>> from tensorflow.python.keras.utils.data_utils import get_file
>>> help(get_file) # hopefully this shows a documentation!
  1. 您提到您正在使用 Eclipse 和 PyDev 作为您的 IDE。你可以告诉它使用你新创建的 virtualenv。我自己不是 PyDev 的用户,所以我无法为您提供帮助,但幸运的是,有关如何执行此操作的详细说明可以在 PyDev's manual 上找到。

【讨论】:

  • 非常感谢您的详细解释。我刚刚尝试从 python 命令行运行“from tensorflow.python.keras.utils.data_utils import get_file”,它也适用于我的环境。当您在新的 python 文件中编写“from tensorflow.python.keras.utils.data_utils import get_file”时,它就无法工作。
  • 我建议在运行文件时仔细检查您运行的 Python 版本是否正确。你是 python 文件吗?
  • 谢谢你的帮助,glu。我认为这与 PyDev 配置有关,因为当我忽略此错误然后直接单击 Eclipse 上的“运行”按钮时,python 代码可以使用原始的“从 tensorflow.python.keras.utils.data_utils import get_file”运行。它只是一个 IDE 编辑器错误提示,但不会影响代码运行。谢谢。
  • 我有最后一个问题,为什么我在这篇文章中被投了反对票?怎么了?我在这里做错了吗?
  • 很高兴能为您提供帮助!我希望您能解决 Eclipse 的问题。请注意,还有一个独立版本的 PyDev,可能更容易配置 - 但正如我所说,我已经很长时间没有使用 PyDev,所以我不能保证任何事情。
猜你喜欢
  • 1970-01-01
  • 2018-07-11
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2015-11-17
相关资源
最近更新 更多