2009-12-23 15 views
7

Sono abbastanza sicuro che gli script Python funzioneranno in tutti e tre, ma voglio essere sicuro. Ho letto qua e là degli editor che possono scrivere CPython, Jython, IronPython e spero che io stia cercando di approfondire la distinzione.Gli script CPython, IronPython e Jython sono compatibili tra loro?

La mia situazione è che ho 3 API diverse che voglio testare. Ciascuna API esegue la stessa funzionalità in base al codice, ma sono differenti nell'implementazione. Sto scrivendo wrapper attorno all'apis di ciascuna lingua. Ogni wrapper dovrebbe esporre esattamente la stessa funzionalità e implementazione a python usando Boost :: python, Jython e IronPython.

La mia domanda è: uno script python scritto utilizzando questi metodi esposti (che sono comuni per ogni lingua) funziona in tutti e tre i "sapori" di Python?

Come ho detto, sono abbastanza sicuro che la risposta sia "Certo", ma ho bisogno di assicurarmi prima di passare troppo tempo a lavorare su questo.

risposta

10

La risposta breve è: A volte.

Alcuni progetti creati su IronPython potrebbero non funzionare con CPython e alcuni moduli CPython scritti in C (ad esempio NumPy) non funzioneranno con IronPython.

In una nota simile, mentre Jython implementa le specifiche del linguaggio, ha diverse incompatibilità con CPython (ad esempio, manca alcune parti della libreria standard CPython e può importare pacchetti e classi di librerie standard Java, come Swing)

Quindi, sì, purché si evitino le incompatibilità.

+0

Ok, ho letto alcuni post su come individuare la libreria che stai usando in python, quindi finché le incompatibilità sono ridotte al minimo questo dovrebbe funzionare abbastanza bene. grazie – Charles

+2

@Charles: Inoltre, ciascuno degli altri interpreti Python (Jython, IronPython) avrà una buona documentazione che dettaglia dove non è conforme a CPython. Se tieni d'occhio quei documenti, sarai in grado di dire rapidamente non appena passerai oltre ciò che funziona su tutti e tre. –

+0

diff tra ipython e cpython: http://en.wikipedia.org/wiki/IronPython#Differences_with_CPython sembra piuttosto piccolo. – zinking

Problemi correlati