2017-07-12 3 views
1

Ich habe folgende Paketstruktur:Python Paket Cython Modul

+ repo/ 
+ setup.py 
+ package/ 
    + module1/ 
     + submodule1.py 
     + submodule2.pyx 
    + module2/ 
     + submodule3.py 

Ich mochte wie submodule2.pyx von submodule1.py von etwas zu verwenden:

import submodule2 

aber ich habe absolut keine Ahnung Wie macht man das. Ich habe versucht, die folgenden Zeilen zu meinem setup.py hinzuzufügen:

aber war nicht erfolgreich. Alle Tutorials, die ich finden konnte, hatten sehr sehr vereinfachte Beispiele, daher bin ich mir nicht sicher, wie ich Cython-Module in mein Python-Paket aufnehmen soll, wenn der Rest des Pakets nur normaler Python-Code ist. Hat jemand irgendwelche guten Beispiele, denen ich folgen könnte, oder kann mir jemand sagen, was ich falsch mache?

Vielen Dank im Voraus!

+0

Bitte geben Sie Informationen über Betriebssystem, Compiler, Fehler (falls vorhanden)/Ausgabe während der Ausführung von 'python setup.py build_ext --inplace'. Angenommen, Linux, überprüfen Sie, ob Sie Submodul2.so irgendwo in Ihrem Verzeichnisbaum haben. – darked89

+0

Um genauer zu sein: Der kompilierte Modulname endet mit: * .cpython-36m-x86_64-linux-gnu.so – darked89

+0

Haben Sie 'aus versucht. submodul2' in submodul1.py importieren? –

Antwort

1

Der Name, der Cythonize gegeben wird, ist, was Cython verwendet, um das Modul aufzurufen und wie es importiert werden soll.

Die obige setup.py eine native Erweiterung zindex genannt erzeugen und wird als import zindexauch in Python-Dateien im Paket zindex importiert werden müssen. Hier

ist ein Beispiel dafür, wie dies zu tun:

from distutils.core import setup 
from setuptools import setup 
from Cython.Distutils import build_ext 

ext_modules = cythonize(Extension(
     "ndmg.graph.zindex", 
     sources=["ndmg/graph/zindex.pyx"], 
     language="c", 
)) 
<..> 

Bau und Erweiterung installieren.

In einer Python-Datei unter ndmg/graph/py_index.py können Sie dann tun.

from zindex import <..> 

aus dem Cython-Modul importieren.

Verwandte Themen