Python 无法导入现有的 TensorFlow 模块
Python can't import existing TensorFlow module
无法导入现有模块,使用 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']
Tensorflow 信息
$ 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 install/environment 的一些东西是靠不住的。
我已经在这个问题上苦苦挣扎了一段时间,但没有成功。这个相关的 question 也没有解决这个问题。有什么建议吗?
在这个 的答案和@gunan 的评论中找到线索。
虽然有问题的机器没有python-gpu接口,python一直在寻找cudnn文件。 tensorflow 0.12.0rc0
(从私有 repo) offers 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 用户需要抑制生成的警告。
无法导入现有模块,使用 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']
Tensorflow 信息
$ 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 install/environment 的一些东西是靠不住的。 我已经在这个问题上苦苦挣扎了一段时间,但没有成功。这个相关的 question 也没有解决这个问题。有什么建议吗?
在这个
虽然有问题的机器没有python-gpu接口,python一直在寻找cudnn文件。 tensorflow 0.12.0rc0
(从私有 repo) offers 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 用户需要抑制生成的警告。