问题:
我接手了一个 Django 应用程序的工作,该应用程序使用导入 svmc 的 Python 模块。当我输入 ./manage.py runserver 时,我得到了以下内容:
Error: No module named svmc
寻求的解决方案:
sh > python
>>> import svmc
>>>
更多细节:
所以我问了一个相关问题,这个问题得到了回答,并引导我来到这里,因为我似乎无法执行该答案提供的解决方案中提到的必要步骤。
在我的另一台机器(Linux、Ubuntu、Lucid Lynx)上,我能够使用包管理器 apt-get 顺利安装。我使用 Homebrew对于我的 OS X 包管理器,并且倾向于避免使用 Darwinports、Macports 或 Fink 来安装 libsvm。
我的环境:
- 基于 Intel x86_64 架构的 Mac OS X 10.6.4 Snow Leopard
- GCC 4.2
- SWIG 2.0
- Python(64 位)
- Django 1.2.1
- setuptools、disutils 等等!
我尝试过的:
- 我下载 libsvm-2.91从http://www.csie.ntu.edu.tw/~cjlin/libsvm/
- 我解压文件,进入 python,运行 make,将 libsvm.so.1 和 svm.so 放在 .bash_profile 中的 PATH 上,但出现了同样的错误:没有名为 svmc 的模块。
- 我查看了项目中引用 svmc 的 .py 文件,并注意到对 svmc 的唯一引用是在下载文件的 python_old 目录中(libsvm-2.91)
- 我下载了 SWIG 2.0 并安装了它
- 进入 libsvm-2.91/python_old
最后,我运行(在 libsvm-2.91/python_old 中):sudo make cleaner rm -f *~ *.o *.so *.pyc *.pyo rm -f svmc_wrap.c sudo make all
截屏呕吐:
"_PyLong_Type", referenced from:
SWIG_AsVal_long(_object*, long*) in svmc_wrap.o
SWIG_AsVal_double(_object*, double*)in svmc_wrap.o
SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*)in svmc_wrap.o
"_PyObject_Init", referenced from:
_PySwigObject_dealloc in svmc_wrap.o
_SWIG_Python_NewPointerObj in svmc_wrap.o
_initsvmc in svmc_wrap.o
...
"_PyTuple_SetItem", referenced from:
_PySwigObject_format in svmc_wrap.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [svmc.so] Error 1
我将非常感激任何帮助、想法、建议或评论!谢谢,Michaux
答案1
好的。所以我不知道我是否能真正回答这个问题。如果任何偶然发现这个问题的人似乎知道答案,并想替换我的伪答案,那么请发表评论,我会将我的答案更改为评论,并用更好的答案替换它。
最终,我只是想找到原始问题中上述的解决方案。事实上,我已经找到了一个行之有效的解决方案:
打开终端并粘贴以下行:
svn co https://pyvision.svn.sourceforge.net/svnroot/pyvision/trunk pyvision
获得后输入:
cd pyvision/R/libsvm/python/
python setup.py install
现在您可以打开终端并输入:
python
>>> import svmc
>>>
瞧!没有错误,并且 libsvm 热度(版本 2.84,在大多数情况下应该可以正常工作 - 请随时纠正我!)
谢谢,祝愿所有 Macintosh OS X 用户好运!Michaux