往Pycharm中集成Python3、Anaconda3和tensorflow的失败经历和最后解决办法
(2018-07-01 09:39:47)分类: 计算机技术 |
由于使用CNN抽取语义关系的效果始终出不来,线性模型效果更次,我打算重返BIGRU,先上一个小一点的数据集,正好看到下面代码,符合我的需要,只是数据用的是中文的,但这不打紧。
https://github.com/squirrel1982/Information-Extraction-Chinese
这套代码的要求是
Python (>=3.5)
TensorFlow (>=r1.0)
scikit-learn (>=0.18)
我Pycharm上的Python是2.7版本的,虽然我之前在调下面代码的时候,将Python中3.5的函数替换成对应的2.7的部分,但这次我想试试Python3使用到底是什么体验,索性就装一个Python3。
https://github.com/squirrel1982/TensorFlow-NRE
安装Python3
比较简单,上官网https://www.python.org/downloads/,下载一个Python3.7.0的安装包,傻瓜式安装。想看安装目录,打开mac中应用程序文件夹,点开Python3.7.0文件夹,打开IDLE,输入import sys,sys.path即可知道安装目录。
指定terminal中默认的Python
#打开配置文件
open ~/.bash_profile
#写入python的外部环境变量
export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/3.6/bin
#重命名python
alias python="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6"
#关闭文件
$ source ~/.bash_profile
#python,查看是否修改成功
还有一点需要补充下,Python3的调用是python3 xxx,而Python2的调用是python
然后安装numpy,这个简单,pip3 install numpy
然后安装tensorflow,pip3 install tensorflow,但这里出了问题,说找不到合适的版本,后来查了下,似乎Python37太新了,和tensorflow还不兼容
又装了一个Python36,同样问题,Python35,同样问题,显然这不是Python和tensorflow的兼容问题,此法不通;
换种方法,使用anaconda来安装tensorflow
Anaconda3
上anaconda网站https://www.anaconda.com/download/
下载Anaconda3,安装好以后创建虚拟环境
安装和创建虚拟环境
这个很重要,使用
激活虚拟环境
source activate tensorflow4Python36,激活后命令行的提示符会变成(tensorflow4Python36)localhost:~
往虚拟环境中安装tensorflow
pip
Pycharm中识别这个虚拟环境
Pycharm community EditionàPreferenceàproject interpreter
在界面上点选local,找到/Users/mac/anaconda3/envs/ tensorflow4Python36/bin,然后点击确定,但之后出了一个问题,Pycharm识别不出来tensorflow和numpy,查了一下发现原来tensorflow和numpy不在tensorflow4Python36目录下的site-packages中,而是在更深的文件夹tensorflow4Python36/lib/python3.6/site-packages/下,导致的结果是虽然在虚拟环境tensorflow4Python36中启动python,我可以import numpy和tensorflow,但在pycharm中编译不了代码中的import numpy和tensorflow。
后来想了一个办法,把tensorflow4Python36/lib/python3.6/site-packages/的内容往tensorflow4Python36/site-packages拷贝一份,虽然现在pycharm可以编译import numpy和tensorflow了,但是在代码执行过程中又报错了,说找不到tf.contrib.rnn.GRUCell。
最后放弃使用Python3.6,按照原来的办法,将Python3中函数替换成对应的2.7的部分,将project interpreter定位到原来https://github.com/squirrel1982/TensorFlow-NRE
中的PYTHON2.7的位置,解决问题。