je jouais avec le tutoriel cython (http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html)Les fonctions définies dans Cython .pyx sont-elles intégrées?
Et j'ai un répertoire comme ceci:
somedir/ExampleCython.py
somedir/fib.pyx
somedir/fib.so
somedir/function_file.py
somedir/setup.py
Lorsque la fib.pyx définit la fonction fib du tutoriel cython lien ci-dessus, function_file.py contient la définition suivante:
def moopy(param):
param += 1
return param
et ExampleCython.py contient les éléments suivants:
import fib as moo
print moo.fib
from function_file import moopy
print moopy
Je construis le fib.so en utilisant python setup.py build_ext --inplace, puis je lance python ExampleCython.py et je reçois la sortie suivante:
<built-in function fib>
<function moopy at 0x1002b4398>
Maintenant, je sais qu'il n'y a pas python construit -appelé fib, et juste pour tester j'ai essayé de changer le nom «fib» à quelque chose de stupide comme «poopypants» et il dit toujours qu'il est intégré. Qu'arrive-t-il à l'espace de nom de la fonction fib? J'ai ce problème dans un autre bloc de code beaucoup plus grand qui m'empêche de décaper une classe que j'ai créée - Pickle se plaint de ne pas trouver ma fonction dans le module auquel elle appartient - mais je me suis dit que je simplifierais pour le question ici.
Pour référence - python 2.7.11/cython 0.26 sur OSX 10.12.6
"intégré" est trompeur - cela signifie simplement qu'il s'agit d'une fonction implémentée dans une bibliothèque C (comme vous pouvez l'attendre de Cython). Vous êtes probablement mieux de créer un [mcve] qui illustre votre problème pickle (qui semble être ce que vous essayez vraiment de résoudre) – DavidW
ok, que dois-je faire à cette question alors? l'éditer avec un exemple mis à jour, ou le fermer ou le marquer répondu ou quelque chose? –
Je modifierais cette question. Puisque personne n'y a répondu, je ne pense pas que ce soit un problème d'y apporter une modification assez importante. (Votre choix cependant - les deux options sont raisonnables!) – DavidW