2016-04-14 5 views
2

Ich bin neu in Cython, also könnte mir etwas offensichtlich fehlen, aber ich habe die Dokumentation durchgelesen und schlug mir eine Weile den Kopf dagegen.Warum funktioniert mein Cython-Cimport für eine pxd-Datei nicht?

Ich habe eine Pyxis-Datei, die ich eine setup.py-Datei zu erstellen wie folgt verwendet:

from distutils.core import setup 
from Cython.Build import cythonize 

setup(
    ext_modules=cythonize("path/to/helpers.pyx"), 
) 

Das funktioniert gut, und ich kann jetzt import path.to.helpers von Schwester Verzeichnissen und Unterverzeichnissen ohne Probleme.

Nun, vor kurzem entschied ich, ich möchte eine helpers.pxd Datei hinzufügen, so dass ich Teile davon zu anderen Cython-Modulen cimportieren kann. Ich habe eine helpers.pxd in path/to hinzugefügt, um dies zu erleichtern, aber wenn ich versuche, cimport path.to.helpers, bekomme ich path/to/helpers.pxd not found Fehler. Muss ich etwas in meinem setup.py ändern, um cimporting vom pxd zu erlauben? Keine der Dokumente, die ich gefunden habe, sagt etwas darüber aus, und ich habe das Gefühl, dass ich alles ohne Glück versucht habe. Ideen?

Antwort

1

Endlich behoben, nach stundenlangem Kopfstoß dagegen. Pxds sind um path viel pingeliger als pyxs, stellt sich heraus. Ich habe keine Idee warum. Wie auch immer, nur das Hinzufügen des Pfades zu meinem pxd behob das Problem. Meine setup.py für path/to/helpers.* bleibt gleich, aber wenn ich alle anderen pyxs bin mit, die Zugriff auf path.to.helpers brauchen, ich sicherstellen, dass der Weg zu path/to/helpers als include-dir enthalten ist, wie:

cython *.pyx *.pxd -a --cplus --include-dir ../some/path

0

Versuchen das Hinzufügen einer __init__.py zu Ihrem path/to/ Verzeichnis. Das funktioniert bei Distutils, glaube ich.

Verwandte Themen