Estoy trabajando en un pequeño proyecto django que se implementará en un contenedor de servlets más adelante. Pero el desarrollo es mucho más rápido si trabajo con cPython en lugar de Jython. Entonces, lo que quiero hacer es probar si mi código se está ejecutando en cPython o Jython en mi settiings.py, así que puedo decirle que use el controlador apropiado de db (postgresql_psycopg2 o doj.backends.zxjdbc.postgresql). ¿Hay una manera simple de hacer esto?¿Puedo detectar si mi código se está ejecutando en cPython o Jython?
Respuesta
si se está ejecutando Jython
import platform
platform.system()
retorno 'Java'
here has some discussion, espero que esto ayude.
Tendrá settings.py únicos para cada entorno diferente.
Su configuración de desarrollo no debe ser su QA/Test o producción settings.py.
Lo que hacemos es esto.
Tenemos un "maestro" settings.py que contiene las aplicaciones instaladas y otros elementos que no cambian mucho.
Tenemos archivos específicos del entorno con nombres como settings_dev_win32.py
y settings_qa_linux2.py
y 'settings_co_linux2.py`, etc.
Cada una de estas configuraciones específicas del entorno importa la configuración del 'maestro', y luego anula cosas como el Controlador de DB. Como cada archivo de configuración es exclusivo de un entorno, no hay instrucciones if y no detecta en qué entorno estamos trabajando.
La producción (en Apache, usando mod_wsgi y mysql) utiliza el archivo settings_prod_linux2.py
y no otro.
Desarrollo (en Windows utilizando sqlite) utiliza el archivo settings_dev_win32.py
.
Como sunqiang señaló
import platform
platform.system()
obras de Jython 2.5, pero esto no funciona en Jython 2.2 (la versión anterior Jython). Además, se ha debatido la posibilidad de devolver más detalles específicos del sistema operativo para llamadas como estas en Jython 3.x. Nada se ha decidido que no, pero para ser segura hacia atrás y hacia delante compatibles, se recomienda usar:
import sys
sys.platform.startswith('java')
que devolverá True para Jython y falso en cualquier otro lugar (en realidad en Jython 2.2 o anterior devuelve 1 para Jython y 0 en cualquier otro lado, pero esto funcionará bien en las declaraciones if y otras verificaciones). Esta llamada funciona en Jython al menos tan atrás como 2.1, y funcionará en el futuro previsible.
En las versiones de Python 2.6 o superior (tenga en cuenta Jython 2.6 aún no ha sido puesto en libertad), otra opción es:
import platform
platform.python_implementation
que devuelve 'CPython' para la aplicación C de Python, 'IronPython' para IronPython y voluntad devuelve 'Jython' para Jython. Obviamente, este no es compatible con versiones anteriores por debajo de 2.6, pero será compatible con versiones anteriores.
La mayoría de la manera clara es:
plataforma de importación
platform.python_implementation()
'CPython'
De forma predeterminada, la mayoría de las veces el intérprete subyacente es CPython, que también es posiblemente el más eficiente :)
- 1. ¿Cómo puedo detectar si mi código se está ejecutando en la consola en Rails 3?
- 2. ¿Cómo puedo detectar si mi proceso se está ejecutando UAC elevado o no?
- 3. ¿Cómo puedo detectar si mi ensamblado .NET se está ejecutando desde un sitio web o desde una máquina de escritorio?
- 4. ¿Cómo detectar si mi aplicación se está ejecutando en una máquina virtual?
- 5. OSX: ¿Cómo detectar si se está ejecutando Mission Control?
- 6. ¿Cómo puede mi programa detectar si se está ejecutando en un dominio en particular?
- 7. Detectar si mi aplicación se está ejecutando en el IDE "Delphi 2007 .Net"
- 8. Comprobando si mi aplicación de Windows se está ejecutando
- 9. ¿Cómo puedo saber si el código de Rails se está ejecutando mediante rake o script/generate?
- 10. ¿Puedo saber, en node.js, si mi script se está ejecutando directamente o está siendo cargado por otro script?
- 11. ¿Cómo puedo detectar si IE8 se está ejecutando en la vista de compatibilidad?
- 12. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 13. ¿Cómo puedo probar si R se está ejecutando como Rscript?
- 14. ejecutando bytecode jython usando java
- 15. ¿Cómo puedo detectar si un programa se está ejecutando desde dentro de valgrind?
- 16. Verifica programáticamente si se está ejecutando syncdb
- 17. ¿Cómo puedo detectar si Python se está ejecutando como una aplicación de 64 bits?
- 18. ¿Cómo puedo saber si mi aplicación se está ejecutando en una sesión de RDP
- 19. ¿Cómo puede mi programa determinar si se está ejecutando en Windows de 32 o 64 bits?
- 20. ¿Cómo puedo detectar si se está ejecutando el Delphi IDE específico?
- 21. Comprobar si el proceso se está ejecutando
- 22. Cómo detectar aplicación se está ejecutando en el simulador o dispositivo
- 23. ¿Cómo puedo saber si mi script de Perl se está ejecutando en Windows?
- 24. ¿Cómo puedo saber si mi kernel OpenCL se está ejecutando en una GPU?
- 25. ¿Cómo puedo detectar si mi código debe hacerse pasar o no?
- 26. Cómo detectar si el iphone está sincronizado cuando la aplicación no se está ejecutando
- 27. ¿Cómo puedo determinar si mi proceso se está ejecutando de forma interactiva?
- 28. ¿Es posible que mi UIViewController para detectar si se está mostrando en un UIPopoverController o no?
- 29. ¿Cuáles son algunas estrategias para escribir código python que funciona en CPython, Jython e IronPython
- 30. ¿Cómo puedo saber si un proceso se está ejecutando?
+1: Me encanta cuando conozco alguna nueva esquina de python. –