有些小众的module会在直接使用conda prompt的conda install XXX的时候失败,错误原因也是繁多的,在查询网上现有资料后我发现无解,所以自己摸索了许久,现整理如下(以snapvx、cvxpy、scs为例)。
解决方案
- 检查电脑系统环境。比如有些模块的documentation直接说明系统要求是windows 64位,那么即便安装模块成功,import的时候也会出现诸如下面的警告。
由于很多第三方的包实际上基于C、C++等基础的编程语言,会要求安装Visual Studio 2012, Visual Studio C++ compiler等软件,按照documentation的说明安装即可。
- 参考模块的documentation中关于手动安装的说明。有些包会有单独的网站,比如http://snap.stanford.edu/snapvx/,有些包有github的repo,有些二者皆有。两个平台提供的documentation和源代码会有文件形式、语言版本的不同,按照需要选择即可。
比如windows的系统可以下载压缩包,解压之后的文件放在C盘的某个位置。使用cmd.exe安装,首先更改cmd.exe的根目录地址。cmd无法更改为D盘等非系统盘,示例中我使用的是ProgramData\snapvx-master文件夹,具体文件夹可以自由选择。 按照documentation的提示,我对setup.py文件进行操作,要求当前根目录中有setup.py文件即可。个人理解setup.py文件的工作机制就是将同目录下的snapvx.py文件复制到对应的python的Lib文件夹中,同时生成其他相关文件。
cd ..
cd PraogramData\snapvx-master
python setup.py install
如果最后一行代码运行后cmd.exe中出现报错,可以直接看原来的XXX.py(本例是cvxpy.py)文件的代码,比如出现代码
if Verbose:
print 'Serial ADMM'
这是python2的代码,然而我使用python3.7,所以我找到github上的文档,终于是支持python3.7的。
总之,手动安装是无奈的下下策,与conda下载相比会麻烦很多,需要注意可能出现的若干问题,不少问题只能自己想办法解决。
- 使用conda里面的pip
scs模块就出现了conda install失败,到github上找没有提供手动安装的说明,因而我尝试性地使用pip install scs,反而因此成功了。