¿cómo puedo llamar a una secuencia de comandos python de crontab que requiere el uso de activate (source env/bin/active)?Llamar a la secuencia de comandos python desde crontab con activate
Respuesta
El guión de activación de virtualenv es bastante simple. En su mayoría establece el camino al intérprete de Python de tu virtualenv; las otras cosas que hace (configuración PS1
, guardar variables antiguas, etc.) no son realmente necesarias si no está en un shell interactivo. Así que la forma más fácil es simplemente para poner en marcha la secuencia de comandos de Python con el intérprete de Python correcta, lo que se puede hacer en una de dos maneras:
1. Establecer la secuencia de comandos de Python para usar intérprete de Python de su virtualenv
suponiendo intérprete de su virtualenv está en ~/virtualenv/bin/python
, puede poner ese camino en la parte superior de la secuencia de comandos de Python:
#!/home/user/virtualenv/bin/python
Y a continuación, iniciar la secuencia de comandos de su crontab, como de costumbre.
2. Iniciar el guión con el intérprete de Python adecuado en su tarea programada
Asumiendo que su escritura está en ~/bin/cronjob
e intérprete de Python de su virtualenv está en ~/virtualenv/python
, se puede poner esto en su crontab:
* * * * * /home/user/virtualenv/python /home/user/bin/crontab
Mi enfoque es siempre mantener crontab tan simple como sea posible y tratar todas las configuraciones dentro de los scripts llamados por crontab.
1) crear un guión shell: por ejemplo /var/webapp/cron.sh
#!/bin/sh
PATH="/var/webapp/.env/bin:$PATH"
export PATH
cd /var/webapp/
python test.py
donde /var/webapp/.env/bin es la ubicación virtualenv. Configuración de RUTA, no es necesario ejecutar la fuente ../activar
2) Establecer correctamente su entorno. Por ejemplo, para una aplicación Django:
#!/usr/bin/env python
import os
from datetime import datetime
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production'
os.environ['DJANGO_CONF'] = 'settings.production'
from util.models import Schedule
dset = Schedule.objects.all()
for rec in dset:
print rec
print 'cron executed %s' % datetime.today()
En este ejemplo, la configuración de Django se encuentran en la configuración/production.py
3) Por último, edite/etc/crontab. Por ejemplo, para ser ejecutar cada media hora, todos los días:
1,31 * * * * root /var/webapp/cron.sh >> /var/webapp/cron.log
en cuenta que es importante para generar registros para ayudarle a encontrar errores o mensajes de depuración.
- 1. llamar a un EDITOR (vim) desde una secuencia de comandos python
- 2. La secuencia de comandos PHP no puede obtenerse desde la secuencia de comandos de Python
- 3. Llame a aspnet_regsql.exe desde la secuencia de comandos SQL
- 4. Pasando el valor de la secuencia de comandos PHP a la secuencia de comandos de Python
- 5. Código de salida incorrecto en python al llamar a la secuencia de comandos de Windows
- 6. Llamar a un script de python desde la línea de comandos sin escribir "python" primero
- 7. Cómo imprimir en stdout desde la secuencia de comandos de Python con la extensión .pyw?
- 8. Llamar a Java desde Python
- 9. Llamar a Python desde C++
- 10. Llamar a gnuplot desde python
- 11. ¿Llamar y recibir resultados de la secuencia de comandos de Python en Java?
- 12. Ejecutar (remota) secuencia de comandos php desde (local) secuencia de comandos pitón
- 13. Llamar a Python desde Ruby
- 14. Subir carpetas desde el sistema local a FTP usando la secuencia de comandos de Python
- 15. Cómo ejecutar una magia de IPython desde una secuencia de comandos (o cronometrar una secuencia de comandos de Python)
- 16. ¿Cómo llamar a un script de Python desde PHP?
- 17. Cómo llamar a una función en otra secuencia de comandos de PowerShell al ejecutar la secuencia de comandos de PowerShell con 'Ejecutar con PowerShell'
- 18. ¿Cómo puedo llamar a una DLL .NET desde una secuencia de comandos Inno Setup?
- 19. Llamar a un script de Python desde un Applescript
- 20. Hacer una secuencia de comandos de Python Orientado a objetos
- 21. Cómo llama a varias secuencias de comandos de MSBuild desde una secuencia de comandos de MSBuild
- 22. ¿Llamar a exiftool desde un script python?
- 23. ¿Cómo "detener" y "reanudar" la secuencia de comandos de Python?
- 24. Crear secuencia de comandos con classpath desde SBT
- 25. Crear scripts de Python y llamar a métodos desde C#
- 26. Cómo llamar a un script de Perl desde Python, ingresando la entrada de la tubería?
- 27. Llamar a la función de Matlab desde python
- 28. Llamar a un módulo Perl desde Python
- 29. ¿Llamar a C/C++ desde Python?
- 30. Enviar un correo electrónico utilizando la secuencia de comandos python
¿qué ocurre con las rutas de acceso a las bibliotecas de easy_install? – Timmy
Si están instalados también en el entorno virtual, o en el directorio "global" de paquetes de sitio, deben encontrarse; de lo contrario, tendrás que ponerlos en tu '$ PYTHONPATH', que se pone un poco más feo pero se puede lograr lanzando el bin de Python con'/usr/bin/env' o somesuch. – mipadi
el último bloque de código probablemente debería terminar con "/ home/bin/cronjob" –