J'ai un script shell qui s'exécute pour prédire quelque chose sur raspberrypi qui a python version 2.7 ainsi que 3.5. Pour prendre en charge les fonctionnalités audio, j'ai créé python 3.5 par défaut. lorsque j'exécute le script shell, il prend la version 2.7 et génère une erreur. L'erreur est affichée dans ce lien
3 Réponses :
Je suggérerais d' ajouter un alias au fichier bashrc racine car vous semblez appeler cette chose en tant qu'utilisateur root.
quelque chose comme l' alias python=python3.5
au bas du fichier ~root/.bashrc
peut avoir l'effet que vous recherchez, même si je suis sûr qu'il existe une solution plus permanente.
D'après le libellé de votre question, la configuration de vos scripts n'est pas exactement claire. Cependant, si vous appelez python dans le script shell, vous pouvez toujours spécifier python3 ou python2 au lieu d'appeler simplement python (qui pointe vers la valeur par défaut de votre système). Cela ressemblerait à quelque chose comme ceci:
#!/usr/bin/env python3 python source code here
Si vous appelez un script via la ligne de commande (par exemple quelque chose du ./python_script.py
dans le shell) qui contient directement du code python, vous pouvez également formater l'en-tête du script comme ceci pour forcer une version spécifique de python:
$ python3 python_script.py
J'ai mentionné python et le script python comme python /opt..../example.py et si je mets python3, il génère une erreur car la commande python3 est introuvable
Vous pouvez sélectionner la version de python existant explicitement en haut du script.
Par exemple, j'ai un script qui sous-exécute le script en python 2.7.12 et en python 3.5.2. Qu'il soit nommé: "différent py versioned.sh"
Son code:
Python version 2.7.12 (default, Oct 8 2019, 14:14:10) [GCC 5.4.0 20160609] Python version 3.5.2 (default, Oct 8 2019, 13:06:37) [GCC 5.4.0 20160609]
Code de 'py in 3.5.py':
#!/usr/bin/python import sys print("Python version") print (sys.version)
Code de 'py in default.py':
#!/usr/bin/python3.5 import sys print("Python version") print (sys.version)
Puis sortie de l'exécution: ./'different py versioned.sh '
#! /bin/bash ./'py in default.py' ./'py in 3.5.py'
montre que chaque morceau de code a été exécuté dans sa version py séparée.
Comment invoquez-vous Python dans le script shell? Si vous appelez python et passez un argument, essayez d'utiliser le chemin complet de Python 3, comme
/usr/local/bin/python3
.