2009-12-23 4 views
7

Je suis assez sûr que les scripts python fonctionneront dans les trois, mais je veux m'assurer. J'ai lu ici et là des éditeurs qui peuvent écrire CPython, Jython, IronPython et j'espère que j'attends beaucoup de la distinction.Les scripts CPython, IronPython, Jython sont-ils compatibles les uns avec les autres?

Ma situation est que j'ai 3 différentes API que je veux tester. Chaque api effectue le même code de fonctionnalité, mais ils sont différents dans la mise en œuvre. J'écris des enveloppes autour des apis de chaque langue. Chaque wrapper devrait exposer la même fonctionnalité et la même implémentation à Python en utilisant Boost :: python, Jython et IronPython.

Ma question est, un script python écrit en utilisant ces méthodes exposées (qui sont communes pour chaque langue) fonctionne-t-il dans les trois "saveurs" de Python? Comme je l'ai dit, je suis sûr que la réponse est «Bien sûr», mais je dois m'assurer avant de passer trop de temps à travailler dessus.

Répondre

10

La réponse courte est: Parfois.

Certains projets construits au-dessus d'IronPython peuvent ne pas fonctionner avec CPython, et certains modules CPython écrits en C (par exemple NumPy) ne fonctionneront pas avec IronPython. Sur une note similaire, alors que Jython implémente la spécification du langage, il a plusieurs incompatibilités avec CPython (par exemple, il manque quelques parties de la bibliothèque standard de CPython, et il peut importer des classes et des paquets de bibliothèque standard Java, comme Swing Donc, oui, à condition d'éviter les incompatibilités.

+0

Ok, j'ai lu quelques articles sur la détection de la librairie que vous utilisez en python, donc tant que les incompatibilités sont réduites au minimum, cela devrait marcher très bien. merci – Charles

+2

@Charles: En outre, chacun des autres interpréteurs Python (Jython, IronPython) va avoir une belle documentation détaillant où il n'est pas conforme à CPython. Si vous gardez un oeil sur ces documents, vous serez en mesure de dire rapidement dès que votre prolongation passé ce qui fonctionne sur les trois. –

+0

diffs entre ipython et cpython: http://en.wikipedia.org/wiki/IronPython#Differences_with_CPython semble assez petit. – zinking

Questions connexes