Wie erstelle ich libsvm-2.91 für Python unter OS X 10.6.4 Snow Leopard mit SWIG 2.0?


0

Problem:

Ich habe die Arbeit an einer Django-App geerbt, die Python-Module verwendet, die svmc importieren. Wenn ich ./manage.py runserver eingebe, erhalte ich Folgendes:

Error: No module named svmc

Lösung gesucht:

sh > python
>>> import svmc
>>>

Weitere Kleinigkeiten:

Also stellte ich eine verwandte Frage , die beantwortet wurde, und führte mich hierher, da ich anscheinend nicht die notwendigen Schritte ausführen kann, die in der in der Antwort angegebenen Lösung aufgeführt sind.

Auf meinem anderen Rechner (Linux, Ubuntu, Lucid Lynx) konnte ich mit dem Paketmanager apt-get recht gut installieren. Ich verwende Homebrew für meinen OS X-Paketmanager und würde es vorziehen, Darwinports, Macports oder Fink zu vermeiden, um libsvm zu installieren.

Meine Umgebung:

  • Mac OS X 10.6.4 Snow Leopard auf Intel-basierter x86_64-Architektur
  • GCC 4.2
  • SWIG 2.0
  • Python (64-Bit)
  • Django 1.2.1
  • setuptools, disutils und mehr!

Was ich ausprobiert habe:

  • Ich habe libsvm-2.91 von http://www.csie.ntu.edu.tw/~cjlin/libsvm/ heruntergeladen.
  • Ich habe die Datei entpackt, die CD in Python eingelegt, make ausgeführt, libsvm.so.1 und svm.so in PATH in .bash_profile abgelegt und den gleichen Fehler erhalten: kein Modul mit dem Namen svmc.
  • Ich habe mir die .py-Dateien in meinem Projekt angesehen, die auf svmc verweisen, und festgestellt, dass sich die einzigen Verweise auf svmc im Verzeichnis python_old der heruntergeladenen Dateien befinden (libsvm-2.91).
  • Ich habe SWIG 2.0 heruntergeladen und installiert
  • cd in libsvm-2.91 / python_old

Schließlich lief ich (in libsvm-2.91 / python_old): sudo make cleaner rm -f * ~ * .o * .so * .pyc * .pyo rm -f svmc_wrap.c sudo make all

Abgeschnittenes Bildschirm-Erbrochenes:

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

Ich würde mich über jede Hilfe, Ideen, Vorschläge oder Kommentare sehr freuen! Danke, Michaux

Antworten:


1

OKAY. Ich weiß also nicht, ob ich diese Frage wirklich beantworten kann. Wenn jemand, der darüber stolpert, die Antwort zu kennen scheint und meine Pseudo-Antwort ersetzen möchte, hinterlassen Sie bitte einen Kommentar, und ich werde meine Antwort in einen Kommentar ändern und durch eine bessere Antwort ersetzen.

Letztendlich habe ich nur versucht, zu der Lösung zu gelangen, die oben in der ursprünglichen Frage angegeben wurde. Ich habe tatsächlich eine Lösung gefunden, die einwandfrei funktioniert:

Laden Sie das mit pyvision gelieferte Installationsprogramm herunter und führen Sie es aus!

Öffne ein Terminal und füge die folgende Zeile ein:

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

Sobald Sie es haben, geben Sie ein:

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

Und jetzt können Sie ein Terminal öffnen und Folgendes eingeben:

python
>>> import svmc
>>>

Voila! Keine Fehler und libsvm-Aktualität (Version 2.84, die in den meisten Situationen gut funktionieren sollte - Bitte zögern Sie nicht, mich zu korrigieren!)

Vielen Dank und viel Glück an alle meine Macintosh OS X-Leute da draußen! Michaux

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.