最近在学习基于网络表示学习,用到了清华大学的框架OpenNe,因为经验缺乏,前段时间事情繁忙,没有跑起来。这两天又开始尝试,遇到了不少的问题,更更改改,算是初步跑出来了。
纠结了很久,在这两个系统之间切切换换,因为我是Linux新手,只自学了一些基本的操作,加上我用anaconda虚拟环境之后,spyder就打不开了(也不知道为啥),所以我选择的是Windows。
Linux应该也可以,等我能解决上述问题的时候试一试。
之前搜索资料的时候,有人说是用python2.7,我就用anaconda虚拟了一个python2.7的环境,发现在下载第三方包的时候,会被告知python2.7自2020.1.1之后不能用了。
后来我选择的是python3.6的环境(同样也是用anaconda虚拟的),之后发现是可以的。
根据readme.md文件,装对应版本的第三方包。
基本上我都是用pip装的,加上国内的源,真的挺快的,比如:
pip install numpy==1.14 -i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host=https://pypi.mirrors.ustc.edu.cn
这里用的是中科大的源,还有其他的源也可以套用这样的格式。(如果某个源不行,就换一个,多试试,应该能找到的。
还有好像在Windows系统上是https不是http,要稍微注意一下。
如果还是不行,比如我怎么也下不了scipy==0.19.1,最后我用conda下了一个1.14版本的(不过后面跑代码好像不行,我改成了1.12.1的)
没安装相应模块,安装即可。
我的问题是:ImportError: cannot import name ‘read_adjlist’
查阅了很多资料,这个问题可能是模块名和文件名冲突等导致的。
(1)发现graph.py下的同名自定义函数,将其修正为其他名字。
(2)将需要import networkx的代码都加上from networkx.readwrite.adjlist import read_adjlist,(具体要进入代码找一下read_adjlist在哪里,这是一个函数)
(3)将代码的主代码部分的简写全部替换成唯一确定的指令防止出错:将.换成openne,将.xxx换成openne.xxx
(4)似乎碰到了anaconda安装部分的错误,注意报错信息上显示的python文件对应地址,复制粘贴在文件资源管理器的搜索里,会自己打开对应的python文件。
将他们的from networkx.algorithms.community import read_adjlist换成from networkx.readwrite.adjlist
以后有空的时候再更吧(顺便加点图)~
欢迎指正和交流~