Als ich versuchte, ein Paket zu erstellen, indem ich `` `setup.py``` usw. in Cython schrieb Grundsätzlich finde ich die Ordnerstruktur chaotisch. Der Grund dafür ist, dass beim Umschließen von C ++ mit Cython der Teil, der die Implementierung auf der C ++ - Seite umschließt, den Code des Headers auf der C ++ - Seite auch auf die Cython-Seite kopieren muss.
Dadurch wird die Anzahl der Dateien erhöht und Sie müssen die Ordner trennen. Wenn Sie zu diesem Zeitpunkt die Bedeutung von "__init __. Py" nicht verstehen oder warum Sie es (für mich) sagen, werden Sie stecken bleiben.
Da es viel Quellcode gibt, ist es gut, ihn in verschiedene Ordner zu unterteilen.
pyx
Aus Dateipxd
Dateicimport
und wann,
Und wenn `pxd``` Dateien`
cimport``` über Ordner hinweg sind
Möglicherweise wird eine Fehlermeldung wie "Datei nicht gefunden" angezeigt.
Um Zeitverschwendung mit solchen Fehlern zu vermeiden Ich denke, es wäre besser, dies zu tun.
--C ++ - und Cython-Code sind durch Ordner getrennt
--Wenn der Ordner mit Cythons Code Unterverzeichnisse enthält, geben Sie jeweils `__init __. Py``` ein. --Schreiben Sie alle
`cimport``` im Cython-Code mit dem Pfad aus dem übergeordneten Verzeichnis des Projekts (wo sich setup.py befindet).
Erstellen Sie beispielsweise eine Ordnerstruktur wie diese.
setup.py
cpp_code/*
cython_code/
| -- __init__.py
folder_a
| -- __init__.py
| -- test_a.pyx
| -- test_a.pxd
folder_b
| -- __init__.py
| -- test_b.pyx
| -- test_b.pxd
In einem solchen Fall setzen Sie `__init__. Py``` in jeden Ordner und Zum Beispiel, wenn
test_b.pxd````
test_a.pxd``` importieren möchte,
test_b.pxd
from cython_code.folder_a.test_a cimport *
Wenn Sie es so einheitlich schreiben, müssen Sie sich wahrscheinlich nicht zu viele Gedanken über Importfehler machen.
Ich habe es als Memorandum zusammengefasst.
Ende.
Recommended Posts