已安装TensorFlow却提示‘No module named tensorflow’的解决咨询
这种情况我在CentOS7上碰到过好几次,核心问题基本都是pip和Python版本不匹配或者安装路径的权限/环境不一致,咱们一步步来排查解决:
第一步:确认pip与Python的对应关系
CentOS7默认可能同时存在Python2和Python3,很容易出现pip关联到Python3但你用的是Python2的情况。先做两个检查:- 运行
pip -V查看当前pip对应的Python版本,再运行python -V确认你执行import时用的Python版本,确保两者都是2.7.14 - 如果pip指向的是Python3,那你需要用
pip2来操作Python2的包管理
- 运行
第二步:定位TensorFlow的实际安装路径
sudo执行pip安装时,包可能会被安装到root权限的site-packages目录,普通用户的Python可能找不到这个路径。运行以下命令查看安装位置:sudo pip show tensorflow找到输出里的
Location字段(比如/usr/lib/python2.7/site-packages),再运行下面的命令查看当前Python的包搜索路径:python -c "import site; print(site.getsitepackages())"对比两个路径,如果TensorFlow的安装目录不在Python的搜索路径里,就会出现import失败的问题。
第三步:针对性解决问题
根据上面的排查结果,对应不同的解决方案:pip与Python版本不匹配
如果发现pip对应Python3,直接用pip2重新安装:sudo pip2 install tensorflow-1.7.0rc0-cp27-cp27mu-manylinux1_x86_64.whl安装完成后再尝试import。
安装路径权限问题
如果TensorFlow安装在root专属目录,普通用户无访问权限,可以修改目录权限:sudo chmod -R o+r /path/to/tensorflow/location # 替换成你查到的Location路径或者直接用普通用户身份安装到个人目录(无需sudo):
pip install --user tensorflow-1.7.0rc0-cp27-cp27mu-manylinux1_x86_64.whl这个命令会把包安装到
~/.local/lib/python2.7/site-packages,这个路径默认会被Python识别。虚拟环境不一致
如果你使用了virtualenv虚拟环境,sudo pip会把包安装到系统Python中,而不是你激活的虚拟环境。这种情况下先激活虚拟环境,再直接安装:source your_venv/bin/activate # 替换成你的虚拟环境路径 pip install tensorflow-1.7.0rc0-cp27-cp27mu-manylinux1_x86_64.whl
验证解决效果
完成上面的操作后,运行下面的命令测试:python -c "import tensorflow as tf; print(tf.__version__)"如果能输出
1.7.0rc0,就说明问题已经解决了。
内容的提问来源于stack exchange,提问作者mentongwu

