2008-09-10 11 views

Respuesta

15

Si hace encuentra necesidad de escribir código único para un entorno, utilice pitones

import mymodule_jython as mymodule 

import mymodule_cpython as mymodule 

tener estas cosas en un módulo sencillo ('' module_importer ''?) Y escribe el código como éste :

from module_importer import mymodule 

de esta manera, todo lo que necesita hacer es alterar module_importer.py por plataforma.

+1

Así que Daren, ¿hay alguna manera de hacer que module_importer importe dinámicamente la variable correcta en función de alguna variable de entorno, etc. – minty

+1

Disculpa, aquí estoy dibujando un espacio en blanco. Sin embargo, esta sería una excelente pregunta de SO: "¿Cómo saber dinámicamente si estamos ejecutando Jython, CPython o IronPython?". Entonces, podrías hacerlo en ifs ... –

+0

El módulo 'os' de Python se puede usar como ejemplo. Proporciona rutinas del sistema operativo, por ejemplo, 'os.unlink',' os.rename', etc., según el sistema en el que se encuentre. – jfs

10

@Daren Thomas: Estoy de acuerdo, pero debe usar el platform module para determinar qué intérprete está ejecutando.

+1

Por lo que sé, 'plataforma' no está disponible en IronPython (2.0.1). 'os' tampoco lo es. – Cyberdrow

2

Escribo el código para CPython y IronPython, pero la sugerencia también debería funcionar para Jython.

Básicamente, escribo todo el código específico de la plataforma en módulos/paquetes separados y luego importo el apropiado según la plataforma en la que me estoy ejecutando. (Consulte el comentario de cdleary anterior)

Esto es especialmente importante cuando se trata de las diferencias entre las implementaciones de SQLite y si está implementando cualquier código de GUI.

1

La cosa n. ° 1 IMO: Enfoque en la seguridad de la rosca. El GIL de CPython hace que escribir código seguro para el hilo sea fácil porque solo un hilo puede acceder al intérprete a la vez. IronPython y Jython son un poco menos de mano.

0

Hay dos principales cuestiones en juego aquí ...

En primer lugar, que yo sepa, sólo se tiene CPython RAII - te tiene que cerrar sus propios recursos en Jython, Ironpython, etc.

Y en segundo lugar, como se ha mencionado, es la seguridad del hilo.

Cuestiones relacionadas