最近因为要远程调试TensorFlow代码,因而在远程服务器上搭建了TensorFlow框架。但又因为远程服务器没有浏览器、没有一切可视化的界面,所以代码调试的任务就必须放在本地,也就是我得远程进行代码调试,即在本地使用服务器端的配置运行代码。
为此,我在服务器端安装了anaconda,准备使用jupyter notebook这个非常直观的交互性软件进行TensorFlow的代码调试。
好了,原因我说完了,下面具体说一下我是咋做的:
这时候出现了问题!import tensorflow报错。但我在命令行下运行python,并import tensorflow并无报错,这时为何?
一番鼓捣之后知道了原因。原因在于,我的tensorflow虚拟环境下没有安装jupyter、ipython,导致我运行jupyter notebook命令的时候,实际上还是打开的base虚拟环境的jupyter kernel。为了验证你打开的jupyter kernel到底是哪个虚拟环境的kernel,你可以在jupyter内运行:
import sys
print(sys.executable)
你需要观察,该命令运行后输出的路径是不是你想运行的那个虚拟环境目录下的python文件。若不是,则你使用jupyter打开的kernel其实就不是你想要的那个虚拟环境。所以总而言之,这是个“如何在anaconda指定虚拟环境下运行jupyter notebook”的问题。
说清楚问题后,就该上解决之道了。
$ conda activate tensorflow # 'tensorflow'换成你想进入的虚拟环境的名字
$ which ipython
$ which jupyter
运行这两句,看看你这个虚拟环境是否安装过这二者——若未安装,则显示的路径是全局的路径,比如"/usr/local/bin/jupyter",而非你家目录下的jupyter路径。
解决:
$ conda install jupyter
$ conda install ipython
# 注意:要在你想安装它们的虚拟环境下运行这两个命令
安装完毕后,在tensorflow虚拟环境下再次运行jupyter notebook,再次查看sys.executable,这次得到的路径就应该是该虚拟环境下的python路径啦
解决问题的心得:
有时候,把到底是什么问题描述清楚、整理明白,你就已经解决了这个问题的八成了。