Как собрать libsvm-2.91 для Python на OS X 10.6.4 Snow Leopard с использованием SWIG 2.0?

1774
mkelley33

Проблема:

Я унаследовал работу над приложением Django, в котором используются модули Python, которые импортируют svmc. Когда я печатаю ./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.

Моя среда:

  • Mac OS X 10.6.4 Snow Leopard на архитектуре Intel x86_64 на базе Intel
  • GCC 4.2
  • SWIG 2.0
  • Python (64-битный)
  • Джанго 1.2.1
  • setuptools, disutils и многое другое!

Что я пробовал:

  • Я скачал libsvm-2.91 с http://www.csie.ntu.edu.tw/~cjlin/libsvm/
  • Я распаковываю файл, cd в python, запускаю make, помещаю libsvm.so.1 и svm.so в PATH в .bash_profile, и получаю ту же ошибку: нет модуля с именем svmc.
  • Я посмотрел на файлы .py в своем проекте, ссылающемся на svmc, и заметил, что единственные ссылки на 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 сделать все

Усеченный экран рвоты:

 "_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 

Буду очень признателен за любую помощь, идеи, предложения или комментарии! Спасибо, Мишо

0

1 ответ на вопрос

1
mkelley33

ХОРОШО. Поэтому я не знаю, могу ли я действительно ответить на этот вопрос. Если кто-то, кто наткнулся на это, кажется, знает ответ и хотел бы заменить мой псевдо-ответ, тогда, пожалуйста, оставьте комментарий, и я изменю свой ответ на комментарий, и заменю его лучшим ответом.

В конечном итоге я просто пытался найти решение, указанное выше в первоначальном вопросе. На самом деле я нашел решение, которое прекрасно работает:

Скачайте и запустите установщик pyvision!

Откройте терминал и вставьте следующую строку:

svn co https://pyvision.svn.sourceforge.net/svnroot/pyvision/trunk pyvision 

Как только вы получите его, наберите:

cd pyvision/R/libsvm/python/ python setup.py install 

И теперь вы сможете открыть терминал и набрать:

python >>> import svmc >>> 

Вуаля! Никаких ошибок и libsvm hotness (версия 2.84, которая должна работать нормально в большинстве ситуаций - пожалуйста, не стесняйтесь исправлять меня!)

Спасибо, и удачи всем моим Macintosh OS X людям там! Мишо