TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中

Posted

技术标签:

【中文标题】TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中【英文标题】:TensorFlow importing in Python CLI and IPython CLI but not in IPython QtConsole 【发布时间】:2017-03-21 11:15:21 【问题描述】:

我在运行 Ubuntu 16.04 的系统上安装了 tensorflow-gpuimport tensorflow 运行良好,在 python CLI 上加载 CUDA,在终端上加载 IPython。但是在IPython QtConsole 中导入时,出现以下错误。

ImportErrorTraceback (most recent call last)
<ipython-input-25-41389fad42b5> in <module>()
----> 1 import tensorflow as tf

/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py in <module>()
     22 
     23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
     25 # pylint: enable=wildcard-import
     26 

/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py in <module>()
     70 for some common reasons and solutions.  Include the entire stack trace
     71 above this error message when asking for help.""" % traceback.format_exc()
---> 72   raise ImportError(msg)
     73 
     74 # Protocol buffers

ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 61, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
    _pywrap_tensorflow = swig_import_helper()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory


Failed to load the native TensorFlow runtime.

See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#import_error

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

提到的 URL 是死链接。

我检查了 QtConsole 的环境变量,它没有我在 .bashrc 文件中所做的修改。我使用!export $ENV_VAR=VALUE 更改了变量。后来我尝试了!echo $PATH,但没有反映这些变化。奇怪的O_o

我尝试更改 os.environ 字典。这反映了我的更改,但仍然无法导入 tensorflow 我该如何解决这个问题?

编辑: 1. Jupyter notebook 也可以导入tensorflow,ipython QtConsole不行

    我尝试以 jupyter qtconsole 而不是 ipython qtconsole 运行,同样的错误消息

【问题讨论】:

【参考方案1】:

当我尝试在我的 Jupyter 笔记本上运行支持 GPU 的 Tensorflow 时,我遇到了同样的问题。我必须解决两件事,也许它们对你也有帮助。

Jupyter 内核

确保您的 jupyter 内核与您希望运行的 venv/python 环境相同。你可以通过运行找到它

$ jupyter kernelspec list

如果不是(我的指向 .local/share/jupyter/kernels/),那么有两种方法可以修复它。

1) 您可以编辑 kernel.json 文件以指向您想要的 python:

$ vim jupyter/kernels/python2/kernel.json

2) 您可以通过运行以下命令从 venv 中删除默认内核:

$ jupyter kernelspec remove python2

这将默认在您的 venv 上使用所需的 python。

Tensorflow 设置错误

pywrap 导入错误是 knwon issue.。因为我不想干预我的安装(因为它在 python CLI 上运行良好,但在 Jupyter 上却不行),唯一对我有用的建议是:

$ export PBR_VERSION=<your pbr version number>

这似乎是 mock 的 setup.cfg 的问题,可能会在以后的版本中解决。

祝你好运!

【讨论】:

我已经删除了内核,你能详细说明PBR 部分吗?我不知道那是什么或如何找到 pbr 版本 (pbr.__version__) 给我一个错误 您可以从您的 venv 运行 pip list 以检查正在运行的 pbr 版本。然后,您可以通过在this 行中执行某些操作将导出语句添加到您的 bash 配置文件中。我必须将export PBR_VERSION=3.1.1 添加到我的 bashrc 中才能正常工作。希望这对你有帮助!

以上是关于TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow在Python中导出和重用Estimator对象

在 Python 中编写和注册自定义 TensorFlow 操作

Python3.7.3安装TensorFlow和OpenCV3

如何在 Python 2.7.18 中安装 Keras 和 Tensorflow?

windows安装python和tensorflow

Tensorflow Numpy不能在ipython笔记本上运行Python2.7和3.5