按照说明从wheel成功安装了Apache Singa v1.0.0,但在以下尝试运行时失败,
(singa) $ pip list | grep singasinga (1.0.0)(singa) $ python> import singa> ImportError: No module named '_singa_wrap'(singa) $ find -name "*singa_wrap*"singa_wrap.pysinga_wrap.pyc_singa_wrap.so
似乎与Swig模块扩展有关。有什么建议吗?
@EDIT
已验证protobuf 2.6.1
已全局安装如下,
(singa) $ python -c "from singa import _singa_wrap"undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameEv$ ldd _singa_wrap.solibprotobuf.so.9 => /usr/lib/x86_64-linux-gnu/libprotobuf.so.9$ dpkg -S libprotobuf.so.9libprotobuf9v5$ apt-cache policy libprotobuf9v5Installed: 2.6.1-1.3
@Solution
在Ubuntu 16.04
上成功本地安装protobuf 2.6.1后,Singa
开始运行如下,
$ sudo apt-get install python-pip # 需要gcc-5因此已安装$ sudo apt-get install gcc-4.8$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5$ sudo update-alternatives --config gcc # 选择gcc-4.8
其余步骤请参考下方@Wei
的回答。再次感谢。
回答:
我认为你可以尝试第一个常见问题中的方法 http://singa.apache.org/en/docs/installation.html#faq
此外,你可以检查_singa_wrap.so的依赖库(进入/Python2.7/site-packages/singa/,并执行ldd _singa_wrap.so
)。如果有任何库(例如cudnn或protobuf)未找到,请尝试安装或导出库路径。
你的问题有一个相关的工单 https://issues.apache.org/jira/browse/SINGA-255。
完成后会更新你。
谢谢。
UPDATE:
你的错误似乎与protobuf有关(可能是由于计算机上存在多个版本的protobuf引起的)。以下是解决方案,
- 下载protobuf(在github上的protobuf-2.6.1.tar.gz)并解压tar文件
-
通过以下命令将protobuf安装到/home//local/中
./configure --prefix=/home/<yourname>/localmake && make installecho "export LD_LIBRARY_PATH=/home/<yourname>/local/lib:$LD_LIBRARY_PATH" >> ~/.bashrcsource ~/.bashrc
pip uninstall singa
pip install <路径到wheel文件>