Comment faire pour compiler et lier plusieurs modules python (ou packages) à l'aide de cython?
J'ai plusieurs modules python (organisés en groupes), qui dépendent les uns des autres. par exemple,
- Module1
- Module2: importations Module1
- Module3
- Module4: importations Module3, Module 2, Module 1
Supposons pertinentes de l'interface pour développer des applications est en Module4 et je veux générer un Module4.donc, en utilisant cython.
Si je procède de la façon naïve, je reçois une extension Module4.de sorte que je peux importer MAIS l'extension s'appuie sur le code source python de Module1, Module2, Module3.
Est-il un moyen pour compiler, pour que, Module1,Module2, Module3 sont compilé et lié à Module4? Je voudrais éviter de faire tout manuellement, par exemple, d'abord compiler Module1.alors changement de déclaration d'importation dans Module2, de manière à importer Module1.donc, plutôt que de Module1.py puis compilation Module2 dans Module2.donc, et ainsi de suite....
Merci!
OriginalL'auteur Mannaggia | 2012-07-16
Vous devez vous connecter pour publier un commentaire.
Modifier. Les deux premières options, reportez-vous à Cython est le code spécifique, ce que j'ai raté, c'est que la question est à propos pur python modules, de sorte que l'option 3 est la solution.
Il ya quelques options:
1.
Voir ce "Comment Créer Une Hiérarchie De Modules Dans Un Package":
https://github.com/cython/cython/wiki/PackageHierarchy
2.
Je préfère le "comprennent" l'énoncé:
http://docs.cython.org/src/userguide/language_basics.html#the-include-statement
J'en ai beaucoup .custode fichiers et ils sont tous inclus dans le principal.custode, c'est tous en un seul espace de noms. Le résultat est un gros module: http://code.google.com/p/cefpython/source/browse/cefpython.pyx
3.
Vous pouvez compiler tous les modules à la fois à l'aide de l'installation par l'ajout de plus d'une "Extension":
4.
Plus efficace compilation - voir ici.
Ahh, je vois bien que vous n'utilisez pas Cython caractéristiques spécifiques ("custode" des fichiers), vous ne voulez compiler normal des modules python à l'aide de cython. Oui, une déclaration "importer Module1" travaille pour l'importation "Module1.py" ou "Module1.donc," - il suffit de ne pas mettre les deux fichiers dans le même répertoire que je ne connais pas le module est importé ensuite. Rien ne change, .donc, est traitée comme une .py fichier lors de l'importation.
Rien ne change, .donc, est traitée comme une .py fichier lors de l'importation. Après avoir compilé .py modules .donc tout devrait fonctionner hors de la boîte.
ok, semble fonctionner, au départ, j'ai renommé tous .py fichiers .custode fichiers et compilé tout. Cependant, j'ai eu des problèmes de l'importation de modules, le problème était que je devrais garder l' ___init__.py fichier pour chaque paquet, je l'ai fait et ensuite l'exécuter en douceur
En passant, j'ai utilisé la méthode 1 (qui, à partir de ma compréhension est un moyen d'automatiser 3), parce que j'ai besoin d'utiliser l'espace de noms d'origine lors de l'importation de modules. Si je voudrais fusionner le tout dans un seul espace de noms puis-je modifier beaucoup de fichiers source en remplaçant chaque _import package1.module1 avec _import module1, etc. J'ai également supprimé le paquet de la déclaration de la partie (ligne 52 du code de wiki.cython.org/PackageHierarchy) et ça fonctionne
OriginalL'auteur Czarek Tomczak