Si está utilizando "workon", en realidad está usando "envoltorio virtualenv", que es otra capa de abstracción que se sienta encima de virtualenv. virtualenv el único que puede ser activado por cd'ing a su directorio raíz virtualenv y en ejecución:
source bin/activate
workon es un comando proporcionado por virtualenv envoltorio, no virtualenv, y lo hace un poco de materia adicional que no se requiere necesariamente para virtualenv llanura . Todo lo que necesita hacer es generar el archivo bin/activate en su directorio raíz de virtualenv para "activar" un virtualenv.
Usted puede configurar su crontab para invocar un script bash que hace esto:
#! /bin/bash
cd my/virtual/env/root/dir
source bin/activate
# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).
python myScript.py
¿Debo seguir usando "#!/Usr/bin/python" para especificar mi intérprete de Python en mi script? Pero mi virtualenv podría apuntar a un intérprete diferente. Aquí es donde estoy confundido. – Continuation
Es posible que desee echar un vistazo a lo que bin/activate está haciendo. Activar un virtualenv básicamente es simplemente modificar su entorno de ruta para apuntar a versiones específicas de comandos, como Python, etc. Si activa un virtualenv, entonces intente ejecutar/usr/bin/python, puede o no estar usando la versión de pitón que su virtualenv está esperando. En lugar de hacer "#!/Usr/bin/python", puede hacer "#!/Usr/bin/env python" para que el env decida qué python ejecutar, según su RUTA. –
Al igual que un aviso, no intente 'source' en su línea cron, ya que es un bashismo y no funcionará, ya que cron usará'/bin/sh' para ejecutar su comando. –