[PYTHON] Si vous rencontrez des problèmes lors de l'importation d'un dossier à un autre lors de la création d'un package avec Cython, consultez ceci.

Aperçu

Quand j'essayais de créer un paquet en écrivant setup.py``` etc. en Cython Fondamentalement, je pense que la structure des dossiers est chaotique. La raison en est que lors de l'encapsulation de C ++ avec Cython, la partie qui encapsule l'implémentation du côté C ++ doit également copier le code de l'en-tête du côté C ++ vers le côté Cython.

Cela augmentera le nombre de fichiers et vous devrez séparer les dossiers. À ce stade, si vous ne comprenez pas la signification de `` __init __. Py '' ou pourquoi vous le mettez (pour moi), vous serez bloqué.

Ce qui semble être le meilleur

Comme il y a beaucoup de code source, il est bon de le diviser en différents dossiers, pyxÀ partir du fichierpxdfichiercimportet quand, Et lorsque les fichiers pxd '' sont cimport '' dans les dossiers Vous pouvez obtenir une erreur du type "Fichier introuvable".

Pour éviter de perdre du temps avec de telles erreurs Je pense qu'il vaudrait mieux faire cela.

Structure des dossiers

Par exemple, créez une structure de dossiers comme celle-ci.


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
        

Dans ce cas, mettez __init__. Py '' dans chaque dossier et Par exemple, si test_b.pxd``` veut importer`` test_a.pxd```,

test_b.pxd



from cython_code.folder_a.test_a cimport *

Si vous l'écrivez d'une manière unifiée comme celle-ci, vous n'aurez probablement pas à vous soucier trop des erreurs d'importation.

Je l'ai résumé dans un mémorandum.

fin.

Recommended Posts

Si vous rencontrez des problèmes lors de l'importation d'un dossier à un autre lors de la création d'un package avec Cython, consultez ceci.
Frappez le sac de sagesse Yahoo lorsque vous avez des problèmes avec le contenu du blog
Si vous obtenez une longue erreur lors de la tabulation d'un shell interactif avec Anaconda
Un mémo lors de la création d'un environnement python avec miniconda
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Si vous rencontrez des difficultés pour envoyer du courrier avec python smtplib, ligne de commande