2008-09-10 6 views

Antwort

15

Wenn Sie tun finden Sie einzigartige Code für eine Umgebung, verwenden Pythons

import mymodule_jython as mymodule 

import mymodule_cpython as mymodule 

haben dieses Material in einem einfachen Modul (‚‘ module_importer ‚‘?) Und geben Sie Ihren Code wie folgt schreiben müssen :

from module_importer import mymodule 

auf diese Weise alles, was Sie tun müssen, ist module_importer.py pro Plattform ändern.

+1

So Daren, gibt es eine Möglichkeit, module_importer die richtige Variable dynamisch basierend auf einige Umgebungsvariable etc. importieren zu lassen. – minty

+1

Entschuldigung, ich zeichne ein Leerzeichen hier. Dies wäre jedoch eine hervorragende SO-Frage: "Wie kann ich dynamisch herausfinden, ob wir Jython, CPython oder IronPython ausführen?". Dann könntest du es einfach in ifs machen ... –

+0

Pythons Modul 'os' kann als Beispiel verwendet werden. Es bietet OS-Routinen wie "os.unlink", "os.rename" usw. je nachdem, auf welchem ​​System Sie arbeiten. – jfs

10

@Daren Thomas: Ich stimme zu, aber Sie sollten die platform module verwenden, um festzustellen, welchen Interpreter Sie ausführen.

+1

Soweit ich weiß, ist 'Plattform' in IronPython (2.0.1) nicht verfügbar. 'os' ist auch nicht. – Cyberdrow

2

Ich schreibe Code für CPython und IronPython aber Tipp sollte auch für Jython funktionieren.

Grundsätzlich schreibe ich den gesamten plattformspezifischen Code in separaten Modulen/Paketen und importiere dann den passenden, basierend auf der Plattform, auf der ich laufe. (siehe Kommentar von Cdleary)

Dies ist besonders wichtig, wenn es um die Unterschiede zwischen den SQLite-Implementierungen geht und wenn Sie einen GUI-Code implementieren.

1

Die # 1 Sache IMO: Fokus auf Thread Sicherheit. CPythons GIL macht das Schreiben von threadsafe-Code einfach, da immer nur ein Thread auf den Interpreter zugreifen kann. IronPython und Jython sind etwas weniger handhaltend.

0

Es gibt zwei großen Fragen hier im Spiel ...

Erstens, meines Wissens, nur CPython hat RAII - Sie Schließen Sie Ihre eigenen Ressourcen in Jython, Ironpython, etc.

Und zweitens, wie bereits erwähnt wurde, ist Thread-Sicherheit.

Verwandte Themen