【问题标题】:Python can't import existing TensorFlow modulePython 无法导入现有的 TensorFlow 模块
【发布时间】:2017-01-17 06:43:11
【问题描述】:

无法导入现有模块,使用 Ubuntu 16.04、python 3.5、Anaconda 4.2.15、tensorflow 0.12。

TensorFlow 包包含一个名为 mnist.py 的帮助程序 module。我已经验证该文件存在于我的机器上,并手动将目录添加到sys.path。当我尝试导入模块时,python 似乎找不到它。我可以import tensorflow as tf 就好了,但是 python 似乎在错误的目录中寻找模块,尽管我已经明确地给了它正确的位置:

>>> import tensorflow.contrib.learn.python.learn.datasets.mnist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/__init__.py", line 25, in <module>
    from tensorflow.contrib import cudnn_rnn
  File "/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/cudnn_rnn/__init__.py", line 21, in <module>
    from tensorflow.contrib.cudnn_rnn.python.ops.cudnn_rnn_ops import CudnnGRU
  File "/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/cudnn_rnn/python/ops/cudnn_rnn_ops.py", line 28, in <module>
    resource_loader.get_path_to_datafile("_cudnn_rnn_ops.so"))
  File "/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/util/loader.py", line 42, in load_op_library
    ret = load_library.load_op_library(path)
  File "/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/load_library.py", line 64, in load_op_library
    None, None, error_msg, error_code)
tensorflow.python.framework.errors_impl.NotFoundError: /home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/cudnn_rnn/python/ops/_cudnn_rnn_ops.so: cannot open shared object file: No such file or directory

验证文件

 ls -l ~/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets
    total 44
    -rw-rw-r-- 2 rh rh 4660 Dec  1 12:09 base.py
    drwxrwxr-x 3 rh rh 4096 Jan 12 19:57 data
    -rw-rw-r-- 2 rh rh 2126 Dec  1 12:09 __init__.py
    -rw-rw-r-- 2 rh rh 1334 Dec  1 12:09 load_csv_test.py
    -rw-rw-r-- 2 rh rh 8308 Dec  1 12:09 mnist.py
    -rw-rw-r-- 2 rh rh 1317 Dec  1 12:09 produce_small_datasets.py
    drwxrwxr-x 2 rh rh 4096 Jan 12 19:57 __pycache__
    -rw-rw-r-- 2 rh rh 2745 Dec  1 12:09 text_datasets.py

验证路径

 >>> sys.path
    ['', '/home/rh/Applications/Anaconda/anaconda3/lib/python35.zip', 
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5', 
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/plat-linux',
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/lib-dynload',
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages',
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/Sphinx-1.4.6-py3.5.egg', 
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg', 
    '/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets']

张量流信息

$ conda list | grep tensorflow  
tensorflow                0.12.0rc0                py35_0    jjhelmus

只有 1 个 Python 环境

$ conda env list
# conda environments:
#
root                  *  /home/rh/Applications/Anaconda/anaconda3

$ type -p python
/home/rh/Applications/Anaconda/anaconda3/bin/python

我的源代码来自一个在 OSX 上完美运行的 tensorflow 教程,关于 Ubuntu 安装/环境的一些东西是不稳定的。 我一直在解决这个问题一段时间没有成功。这个相关的question 也没有解决这个问题。有什么建议吗?

【问题讨论】:

  • 真正的问题是错误消息的最后一行/home/rh/Applications/Anaconda/anaconda3/lib/python3.5/site-packages/tensorflow/contrib/cudnn_rnn/python/ops/_cudnn_rnn_ops.so: cannot open shared object file: No such file or directory。有没有可能你安装了 GPU 版本而不安装 CUDA 和 cuDNN?
  • 我的 GPU 是 ATI,所以没有安装任何 CUDA 的东西。我从 Py3.5 64 位安装程序 Anaconda3-4.2.0-Linux-x86_64.sh 安装 Anaconda,从 Anaconda site 下载。
  • 关于 GPU 可访问性,来自https://docs.continuum.io/accelerate/:“Accelerate 提供了对针对 Intel CPU 和 NVidia GPU 的性能进行了优化的数值库的访问”。它需要安装我没有的accelerate 包:$ conda list | grep accelerate 返回空白。我找不到任何迹象表明库存 Anaconda 包含 GPU 可访问性。
  • 你安装了哪个 tensorflow pip 包? - 我刚刚意识到你是通过 conda 安装的。 conda 中的软件包是社区维护的,所以我不确定那里可能有什么问题。您是否可以在干净的 conda 环境中尝试 pip 安装?命令应该是pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.1-cp35-cp35m-linux_x86_64.whl

标签: tensorflow anaconda python-3.5 ubuntu-16.04 mnist


【解决方案1】:

related question 的答案和@gunan 的评论中找到了线索。

虽然有问题的机器没有 python-gpu 接口,但 python 一直在寻找 cudnn 文件。 tensorflow 0.12.0rc0(从私人repo 安装)提供gpu support by default,我无法通过重置环境变量来禁用它。

解决方案是从默认 Anaconda 存储库中删除 tensorflow 0.12.0rc0 并将其替换为 tensorflow 0.10.0rc0

$ conda remove tensorflow
$ conda install tensorflow
$ conda list | grep tensorflow  
tensorflow                0.10.0rc0           np111py35_0


            ----------

警告

在版本 10 和 12 之间不推荐使用几个 tensorflow 函数。目前,版本 12 是 OSX Anaconda Python 推荐的 tensorflow 包(使用 Anaconda pip 从私有存储库安装)。任何需要在 Mac 和 non-gpu Linux 上运行的脚本都应使用已弃用的版本 10 功能。 Mac 用户将需要禁止显示生成的警告。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多