Al intentar apuntar a dos de estos entornos al mismo tiempo, puedo decir con seguridad que si tiene que usar una base de datos, etc. terminará teniendo que escribe un código único para ese entorno. ¿Tienes una excelente manera de manejar esta situación?¿Cuáles son algunas estrategias para escribir código python que funciona en CPython, Jython e IronPython
Respuesta
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.
@Daren Thomas: Estoy de acuerdo, pero debe usar el platform module para determinar qué intérprete está ejecutando.
Por lo que sé, 'plataforma' no está disponible en IronPython (2.0.1). 'os' tampoco lo es. – Cyberdrow
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.
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.
estoy bastante seguro de que ya sabe esto, pero por desgracia Jython can't load c extension modules.
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.
- 1. ¿Qué tiene PyPy para ofrecer sobre CPython, Jython e IronPython?
- 2. ¿Los scripts CPython, IronPython, Jython son compatibles entre sí?
- 3. CPython vs. Jython vs. IronPython para desarrollo de GUI multiplataforma
- 4. compatibilidad entre CPython e IronPython cPickle
- 5. ¿Cuáles son algunas estrategias populares de diseño de Git?
- 6. ¿Cuáles son algunas buenas estrategias para permitir que las aplicaciones implementadas sean corregibles?
- 7. IronPython ScriptRuntime equivalente a CPython PYTHONPATH
- 8. ¿Cuáles son algunas buenas estrategias para corregir errores a medida que el código se vuelve más complejo?
- 9. ¿Cuáles son algunas herramientas de cobertura de código para Perl?
- 10. Escribir un servidor basado en socket en Python, ¿estrategias recomendadas?
- 11. ¿Cuáles son las mejores estrategias para usar múltiples bibliotecas AJAX?
- 12. ¿Cuáles son los pros y los contras de las diversas implementaciones de Python?
- 13. ¿Cuáles son algunas buenas aplicaciones de muestra que usan Spring e Hibernate?
- 14. ¿Cuáles son algunas características útiles de TextMate?
- 15. ¿Cuáles son algunas características interesantes del código fuente de EveryBlock.com?
- 16. ¿Cuáles son algunas situaciones en las que Agile es inapropiado?
- 17. Python/jython coexistiendo en virtualenv
- 18. ¿Cuáles son algunas buenas soluciones de ORM de Python?
- 19. ¿Cuáles son las (des) ventajas de escribir pruebas unitarias en un idioma diferente al código?
- 20. ¿Cuáles son algunas metodologías de programación para desarrolladores en solitario?
- 21. ¿Cuál es la diferencia entre Python vs Jython vs IronPython vs wxPython?
- 22. fast-ish python/jython IPC?
- 23. Algunas aclaraciones básicas sobre Python?
- 24. ¿Es posible escribir código para escribir código?
- 25. ¿Cuáles son algunas formas elegantes de abstraer el manejo repetitivo de excepciones en python?
- 26. ¿Cuáles son algunas herramientas interesantes, gratuitas y de código abierto de análisis dinámico para Java?
- 27. ¿Cuáles son los inconvenientes de Stackless Python?
- 28. ¿Cuáles son algunas opciones para asegurar redis db?
- 29. ¿Cuáles son algunas geniales pero poco conocidas bibliotecas para Lua?
- 30. ¿Puedo detectar si mi código se está ejecutando en cPython o Jython?
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
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 ... –
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