PyPy cpyext: jede Dokumentation? wie benutzt man? PyThreadState_Get Fehler?

8

Ich habe gelesen ( hier ), dass PyPy unterstützt hat CPython Erweiterungsmodule über cpyext.

Ich habe keine cpyext Dokumentation gefunden. Gibt es welche?

Wie benutze ich es?

Aus dem Quellcode (z. B. hier ) ), Habe ich herausgefunden, dass ich mein leveldb.so Modul laden muss, wahrscheinlich:

%Vor%

Dies stürzt jedoch mit diesem Fehler ab:

%Vor%

Ich habe im Backtrace bemerkt, dass es die Funktionen von meinem CPython aufruft, nicht von PyPy:

%Vor%     
Albert 08.11.2012, 19:07
quelle

2 Antworten

6

Ich habe es herausgefunden.

Das Modul muss neu kompiliert werden. Ich muss die Header-Dateien von PyPy verwenden. Zum Verknüpfen darf ich keine Verbindung zu libpython herstellen. Ich muss dem Linker nur sagen, dass er nicht aufgelöste Symbole ignorieren soll.

Hier sind meine Befehle zum Erstellen von py-leveldb auf MacOSX:

%Vor%

Das hat funktioniert. Ich habe gerade cpyext.load_module("leveldb.so","leveldb") gemacht.

Ich habe auch einige Anmerkungen zu CPyExt in ihrem Wiki hier gefunden.

    
Albert 08.11.2012, 19:52
quelle
-1

Plyvel, eine schnelle und funktionsreiche Python-Schnittstelle zu LevelDB, besteht auch fast alle seine vielen Komponententests, wenn es unter PyPy mit cpyext ausgeführt wird. (Die einzige Ausnahme betrifft das Threading.) Die Installation ist so einfach wie "pip install plyvel"; Man muss sich nicht mit Compiler-Flags herumschlagen.

Siehe Ссылка und Ссылка für weitere Informationen.

(Disclaimer: Ich habe Plyvel geschrieben.)

    
wouter bolsterlee 10.12.2012 23:53
quelle

Tags und Links