GNU/Linux >> Tutoriels Linux >  >> Linux

shebang env version python préférée

#!/bin/sh
''''which python2 >/dev/null 2>&1 && exec python2 "$0" "[email protected]" # '''
''''which python  >/dev/null 2>&1 && exec python  "$0" "[email protected]" # '''
''''exec echo "Error: I can't find python anywhere"         # '''

import sys
print sys.argv

Ceci est d'abord exécuté en tant que script shell. Vous pouvez mettre presque n'importe quel code shell entre '''' et # ''' . Ce code sera exécuté par le shell. Ensuite, lorsque python s'exécute sur le fichier, python ignorera les lignes car elles ressemblent à des chaînes entre guillemets triples pour python.

Le script shell teste si le binaire existe dans le chemin avec which python2 >/dev/null puis l'exécute si c'est le cas (avec tous les arguments au bon endroit). Pour en savoir plus, consultez Pourquoi cet extrait avec un shebang #!/bin/sh et exec python entre 4 guillemets simples fonctionne-t-il ?

Remarque :La ligne commence par quatre ' et il ne doit y avoir aucun espace entre le quatrième ' et le début de la commande shell (which ...)


Quelque chose comme ça :

#!/usr/bin/env python
import sys
import os
if sys.version_info >= (3, 0):
    os.execvp("python2.7", ["python2.7", __file__])
    os.execvp("python2.6", ["python2.6", __file__])
    os.execvp("python2", ["python2", __file__])
    print ("No sutable version of Python found")
    exit(2)

Mettre à jour Vous trouverez ci-dessous une version plus robuste de la même chose.

#!/bin/bash

ok=bad
for pyth in python python2.7 python2.6 python2; do
  pypath=$(type -P $pyth)
  if [[ -x $pypath ]] ; then
    ok=$(
      $pyth <<@@

import sys 
if sys.version_info < (3, 0):
  print ("ok")
else:
  print("bad")
@@

    )
    if [[ $ok == ok ]] ; then
      break
    fi
  fi
done

if [[ $ok != ok ]]; then
  echo "Could not find suitable python version"
  exit 2
fi

$pyth <<@@
<<< your python script goes here >>>
@@

Linux
  1. Comment changer la version python par défaut sur Debian 9 Stretch Linux

  2. Comment installer Python sur Ubuntu 20.04 et 18.04 ?

  3. Arguments multiples dans Shebang?

  4. Pourquoi Python 2.7 est-il toujours la version Python par défaut dans Ubuntu ?

  5. Win-KeX version 2.0

Comment vérifier la version de Python

Instruction Python if..else

Comment installer Python 3.x et PIP 3 sur Ubuntu 20.04 LTS

Comment installer Python 2.7 sur Ubuntu 20.04 LTS

Comment installer Python 2.7 &PIP2 sur Ubuntu 20.04 LTS Linux

pip install pickle ne fonctionne pas - aucun fichier ou répertoire de ce type