Utilisation de crontab pour un script PYTHON
Résolu/Fermé
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
-
Modifié le 6 juil. 2022 à 15:29
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 7 juil. 2022 à 19:06
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 7 juil. 2022 à 19:06
A voir également:
- Linux crontab python script
- Script vidéo youtube - Guide
- Citizen code python avis - Accueil - Outils
- Crontab toutes les heures ✓ - Forum Shell
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
5 réponses
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
Modifié le 6 juil. 2022 à 15:33
Modifié le 6 juil. 2022 à 15:33
Bonjour,
Quelle version de python est installée sur ton système ? Car la deuxième ligne de ton script stipule qu'il faut utiliser
D'ailleurs, pourquoi forcer la version de python ?
Personnellement, j'écrirais simplement au début du fichier python :
Cela lancera ton script avec le dernier interpréteur
Exemple :
Bonne chance
Quelle version de python est installée sur ton système ? Car la deuxième ligne de ton script stipule qu'il faut utiliser
python3.9, or celui-ci ne semble manifestement pas installé.
D'ailleurs, pourquoi forcer la version de python ?
Personnellement, j'écrirais simplement au début du fichier python :
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
Cela lancera ton script avec le dernier interpréteur
python3disponible, comme le montre la commande :
ls -l $(which python3)
Exemple :
(mando@silk) (~) $ ls -l $(which python3)
lrwxrwxrwx 1 root root 10 2 mai 00:33 /usr/bin/python3 -> python3.10
Bonne chance
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
Modifié le 6 juil. 2022 à 17:28
Modifié le 6 juil. 2022 à 17:28
Bonjour et merci pour ces premiers éléments de réponse.
J'utilise bien la version 3.9 comme retourné par ta commande :
D'ailleurs hors utilisation du
Comme si le fait d'être lancé via le cron modifiait mon environnement.
J'utilise bien la version 3.9 comme retourné par ta commande :
ls -l $(which python3)
lrwxr-xr-x 1 root admin 9 10 déc 2020 /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -> python3.9
D'ailleurs hors utilisation du
crontab, ce script fonctionne.
Comme si le fait d'être lancé via le cron modifiait mon environnement.
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
6 juil. 2022 à 18:04
6 juil. 2022 à 18:04
Un grand merci, cela faisait un moment que je tournai en rond.
S'agissant du PATH, il contient bien le bon chemin :
/usr/bin/env | grep "^PATH="
PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:./PYTHON/prog:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
J'ai utilisé le lancement via un script shell et spécifié le chemin de l'interpréteur python comme tu le préconises.
J'ai également dans mon script python indiqué python3 afin d'utiliser le lien vers python 3.x
Mon traitement s'effectue donc parfaitement via le crontab.
Encore merci.
Claude
S'agissant du PATH, il contient bien le bon chemin :
/usr/bin/env | grep "^PATH="
PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:./PYTHON/prog:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
J'ai utilisé le lancement via un script shell et spécifié le chemin de l'interpréteur python comme tu le préconises.
J'ai également dans mon script python indiqué python3 afin d'utiliser le lien vers python 3.x
Mon traitement s'effectue donc parfaitement via le crontab.
Encore merci.
Claude
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
7 juil. 2022 à 11:35
7 juil. 2022 à 11:35
Merci pour ton retour et bonne continuation !
Juste une précision, d'après cette discussion, cron écrase effectivement la variable d'environnement. Apparemment, tu peux définir cette variable PATH
- soit en début de fichier :
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
- soit avec une ligne du genre :
* * * * * PATH=$PATH:/usr/local/bin:/path/to/some/thing
Dans ton cas, j'essaierais donc simplement de mettre en début de fichier cron :
PATH=$PATH
Bonne chance
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
7 juil. 2022 à 19:06
7 juil. 2022 à 19:06
Merci pour ce complément.
Claude
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
6 juil. 2022 à 17:27
6 juil. 2022 à 17:27
Bonjour Claude,
Qui lance cron ? Le même utilisateur ? Si tu lances
À mon avis, non. Le chemin dans lequel est installé Python 3 me paraît aussi assez suspect (il devrait être
Par ailleurs, je maintiens que tu ne devrais pas (à moins d'avoir une très bonne raison) de spécifier que tu veux un interpréteur
Enfin, une autre manière de résoudre le problème est de lancer ton script python via script shell en spécifiant le chemin vers l'interpréteur python que tu souhaites utiliser.
Bonne chance
Qui lance cron ? Le même utilisateur ? Si tu lances
/usr/bin/envavec cet utilisateur, est-ce que
/Library/Frameworks/Python.framework/Versions/3.9/bin/figure dans ton
PATH?
/usr/bin/env | grep "^PATH="
À mon avis, non. Le chemin dans lequel est installé Python 3 me paraît aussi assez suspect (il devrait être
/usr/binsi c'est comme sous Linux)... mais peut-être est-ce normal sous Mac OS ? As tu installé
python3via ton gestionnaire de paquets (
brew install python3) ?
Par ailleurs, je maintiens que tu ne devrais pas (à moins d'avoir une très bonne raison) de spécifier que tu veux un interpréteur
python3.9, mais bien
python3. Cela permettra que ton script continue à marcher quand tu mettras à jour ton interpréteur Python 3.
Enfin, une autre manière de résoudre le problème est de lancer ton script python via script shell en spécifiant le chemin vers l'interpréteur python que tu souhaites utiliser.
#!/usr/bin/env sh clear LOC_FICH=/users/xxxxxxxx/PYTHON/Prog/gestion_crypto/ export LOC_FICH DDJ=`date +%d-%m-%Y` NFIC=/users/xxxxxxxxr/bag_report EXT=".txt" PYTHON3=/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 $PYTHON3 $HOME/PYTHON/Prog/bag.py >$NFIC$DDJ$EXT 2>&1
Bonne chance