Ich habe Cython zum ersten Mal benutzt. Ich bin viel gestolpert, indem ich ein einfaches Modul verschoben habe, also lasse ich es als Memo.
Umgebung: Mac OS El Capitan
Ich bezog mich auf Learning Cython Programming - Second Edition. Der Code lautet hier.
In dem Buch habe ich eine .pyx
-Datei erstellt, aber ich habe versucht, eine normale .py
-Datei zu verwenden.
cython -o helloworld.c helloworld.py
Dann kompilieren.
gcc -g -O2 -fpic -c helloworld.c -o helloworld.o `python-config --cflags`
gcc -g -O2 -shared -o helloworld.so helloworld.o `python-config --libs`
Beim Importieren der auf diese Weise erstellten .so
-Datei ist ein Segmentierungsfehler aufgetreten.
Für dieses Problem wurde auf github ein Problem gemeldet. Ich habe die an gcc übergebenen Optionen geändert und der Fehler ist nicht aufgetreten.
gcc -g -O2 -fpic -c helloworld.c -o helloworld.o `python-config --cflags`
gcc -g -O2 -shared -o helloworld.so helloworld.o `python-config --ldflags`
Auch in Cython-Dokumentation distutils Das Verfahren zur Verwendung wird beschrieben, und ich fand es einfacher.
Symbol not found: _PyUnicodeUCS4_Compare
Nachdem die Übung beendet ist, habe ich das Modul, auf das ich ziele, mit Cython erstellt. Als ich es versuchte, bekam ich einen ImportError-Fehler namens Symbol nicht gefunden: _PyUnicodeUCS4_Compare.
Lesen Sie diesen Artikel, löschen Sie Python 2.7.12, das mit virtualenv installiert wurde, und versuchen Sie, es mit Python auf dem Mac-System auszuführen. Ich tat.
Ist es eine Frage des Moduls, mit dem zum Zeitpunkt der Erstellung verknüpft werden soll? Im Gegensatz zu einfachem Python ist Cython problematisch.
Recommended Posts