8 votes

Comment utiliser annotate=True sur Cythonize()

Je suis novice en Cython, mais j'ai réussi à le faire fonctionner en suivant ce qui suit guide de base tiré de la documentation officielle :

Tout ce qu'il dit, c'est "Cython dispose d'un moyen de visualiser l'interaction avec les objets Python et l'interface C-API de Python. Pour cela, passez le paramètre annotate=True à cythonize(). Cela produit un fichier HTML."

Je suis très surpris de ne pas avoir pu trouver cette question sur Google ou que personne ne l'ait posée sur stackoverflow. Mais je n'arrive pas à comprendre comment le faire fonctionner. Il n'indique pas précisément ce qu'il veut. J'ai donc essayé la syntaxe la plus évidente (dans Setup.py) :

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

setup(
    ext_modules = cythonize("gpcython.pyx", annotate=True)
)

Bien qu'il n'y ait pas d'erreur, je ne vois pas non plus de HTML généré.

Je suis sous Windows et j'utilise la dernière version de Python 3.7 avec Cython 0.29.12.

https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html

7voto

Bruce Nielson Points 245

Voici ce que j'ai finalement utilisé et qui semble fonctionner :

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

import Cython.Compiler.Options
Cython.Compiler.Options.annotate = True

setup(
    ext_modules = cythonize("gpcython.pyx", annotate=True)
)

4voto

Izana Points 146

Vous pouvez essayer de supprimer le fichier c ou cpp généré. S'il n'y a pas de changement dans pyx, cython n'essaiera pas de répéter la construction. Je ne sais pas comment Cython suit les dépendances de la compilation. Je suppose que c'est similaire à la façon dont make œuvre.

2voto

Behzad Seyfi Points 957

Il est peut-être tard, mais j'ai résolu ce problème comme suit :

Changer .pyx ou supprimer le fichier source .c et exécutez setup.py à nouveau pour forcer cython pour le reconstruire.

--force peut ne pas fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X