1
votes

changer la version de python lors de l'exécution du script shell

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


1 commentaires

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 .


3 Réponses :


0
votes

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.


0 commentaires

0
votes

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


1 commentaires

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



0
votes

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.


0 commentaires