Les environnements virtuels en Python sont très pratiques. Il permettent d’isoler les librairies, et ainsi de bloquer une certaine version d’une librairie spécifique pour un script en particulier. De plus, il est courant de créer un environnement lorsque l’on développe des scripts, ou encore que nous faisons des tests pour valider le bon fonctionnement suite à la mise à jour desdites librairies sans casser la production.
Cependant, pour activer ces environnements, il est nécessaire de les activer manuellement avec une commande, sauf qu’avec l’exécution du Cron, il ignore complètement cet étape, même s’il est spécifié dans la ligne de commande.
Pour résoudre le problème, il faut exécuter les binaries Python qui se trouve dans le dossier de l’environnement. Il est alors garantis que les bonnes librairies seront chargées avec les bonnes versions.
Dans notre exemple, le script ainsi que l’environnement virtuel se trouvent dans le dossier /home/localadmin/project. Le dossier contenant l’environnement est appelé venv.
Ainsi, si nous souhaitons exécuter un script toutes les 4 heures chaque jour, la ligne serait la suivante:
00 */4 * * * /home/localadmin/project/venv/bin/python /home/localadmin/project/main.py
Naturellement, le chemin est à adapter à votre configuration et emplacements, sachant que le dossier de l’environnement peut ne pas être au même endroit que le projet.
