我一开始是按照在Ubuntu上安装Tensorflow去安装Tensorflow,作为一个新人小白,按照它的要求安装了Virtualenv。过程还挺波折,主要是搞不清~/其实是代表~/home/username,在参考了廖大神的第三方模块安装内容之后,总算顺利进入了激活环境。
Idle3还是Jupyter Notebook
在激活环境中安装完Python3.6和Tensorflow,终端里进入Python交互模式,输入
>>> import tensorflow
总算可以成功import了!我以为这样就可以继续安装下一个工具包,结果却并不是这样。
在终端里成功import之后,我试着在环境里直接打开idle3,它是我在之前就安装好的。打开后发现不能import,经过朋友提醒,才发现它认的是3.5。
idle3打开的是3.5……虚拟环境名不虚传。朋友表示你不妨试试看Jupyter Notebook呢?我一想,正好我在Github上下载到的源码是以Jupyter形式上传的啊,直接安装用它打开源码岂不是非常方便调试?
一不做二不休,下载。
下载完就发现,从虚拟环境中打开Notebook之后,并不能import tensorflow。想了一下可能是Notebook的内核还是3.5?看了一下果然是这样。按照某乎方法,手动注册:
~$ python 3.6-m pip3 install ipykernel
~$ python3.6 -m ipykernel install --user
看了一下,server information是3.5,current是3.6,试试看?还是失败。
kernel信息朋友说,是不是你把Notebook装在环境外面了?试试看卸载,果然是装在了外面。为了确实卸载的干净一些,我把环境内外的Notebook都卸载掉了,然后进入虚拟环境单独安装,这回改好了吧?还是失败。不仅失败,这回连Notebook都打不开了!提示缺少jinja2的一个模块。
缺jinja2的模块不对啊,Notebook安装就会自带jinja2的吧?
又试了几次,仍然失败,相当沮丧。朋友说,你尝试修改一下软链接,有可能是几个版本的Python在打架。试了几次,仍然失败。
老同学:这就很尴尬了,真的没辙。
都到这一步了,不能放弃啊!不甘心,又回去仔细查看各个版本的安装包。
/usr/lib/python2.7/dist-packages和/usr/lib/python3.5/dist-packages下确实已经安装了jinja2,而我的3.6是在虚拟环境下的,安装目录其实是/usr/local/lib/python3.6/dist-packages,而该目录下确实没有jinja2。应该就是pip3指向的问题了。
我恐怕乱改链接又会出问题,索性手动在3.6目录下安装pip3。在用这个新的pip3去install jinja2。成功了。
这回碰上更大的麻烦
进去之后,依旧不能import tf。再看看内核设置,确实是没问题的,两个都是3.6。这下到底要怎么解决呢?纠结了将近一个小时,无意间搜索到给Jupyter Notebook换kernel的方法。
难道我的kernel有问题?
(tensorflow) ~/myproject$ jupyter kernelspec list
Available kernels: python3 ~/.local/share/jupyter/kernels/python3
这就是它的kernel文件所在的位置,打开kernel.json:
{
"argv": [
"/usr/bin/python3.6", #对应的地址
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3", ##kernel的名字
"language": "python" ##甚至可以修改语言
}
找到问题了!kernel对应的仍然是外部环境的"/usr/bin/python3.6",这里并没有install tf。因此将地址改成 ~/myproject/tensorflow/bin/python3.6,再试试,大功告成!
在Notebook成功import tf之后再下载keras等其他工具包,一切顺利。从一个第一次接触Linux的小白到搭建好工具平台,耗时4天,收获很大,并不亏!
平台搭好了,接下来就是正式的工作,再接再厉!
网友评论