78 votes

Python: comment définir virtualenv pour une crontab?

Je tiens à mettre en place un crontab pour exécuter un script Python.

Dire que le script est quelque chose comme :

Est-il un moyen à que je pourrais préciser un virtualenv pour ce script Python courir ? Dans le shell, je voudrais juste faire :

Y a-t-il quelque chose d’équivalent, que je pourrais faire dans la crontab pour activer un virtualenv ?

115voto

Mike Pennington Points 16712

Une autre solution qui fonctionne bien pour moi ...

 0    9    *    *    *    /path/to/virtenv/bin/python /path/to/cron_script.py
 

Je préfère utiliser python directement depuis le virtualenv ...

84voto

Andy White Points 36586

Si vous êtes à l'aide de "travaillons" vous êtes réellement en utilisant "virtualenv wrapper" qui est une couche d'abstraction qui se trouve sur le dessus de virtualenv. virtualenv seul peut être activé par le cd communique à votre virtualenv répertoire racine et en cours d'exécution:

source bin/activate

travaillons est une commande fournie par virtualenv wrapper, pas virtualenv, et il fait un peu d'autres choses qui n'est pas nécessairement requis pour la plaine de virtualenv. Tous vous avez vraiment besoin de faire est la source de la bin/activate fichier dans votre virtualenv répertoire racine pour "activer" un virtualenv.

Vous pouvez configurer votre crontab pour appeler un script bash qui fait ceci:

#! /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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X