GNU/Linux >> Linux Esercitazione >  >> Linux

shebang env versione python preferita

#!/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

Questo viene prima eseguito come uno script di shell. Puoi inserire quasi tutti i codici shell tra '''' e # ''' . Tale codice verrà eseguito dalla shell. Quindi, quando python viene eseguito sul file, python ignorerà le righe poiché a python sembrano stringhe tra virgolette triple.

Lo script della shell verifica se il binario esiste nel percorso con which python2 >/dev/null e poi lo esegue se è così (con tutti gli argomenti nel posto giusto). Per ulteriori informazioni, consulta Perché questo frammento con shebang #!/bin/sh e exec python all'interno di 4 virgolette singole funziona?

Nota:la riga inizia con quattro ' e non devono esserci spazi tra il quarto ' e l'inizio del comando shell (which ...)


Qualcosa del genere:

#!/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)

Aggiorna Di seguito è riportata una versione più robusta dello stesso.

#!/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. Come modificare la versione Python predefinita su Debian 9 Stretch Linux

  2. Come installare Python su Ubuntu 20.04 e 18.04?

  3. Argomenti multipli in Shebang?

  4. Tox installa la versione errata di pip nel suo ambiente virtuale

  5. pytest in esecuzione con un'altra versione di python

Come controllare la versione di Python

Python if..else Istruzione

Come installare Python 3.x e PIP 3 su Ubuntu 20.04 LTS

Come installare Python 2.7 su Ubuntu 20.04 LTS

Come installare Python 2.7 e PIP2 su Ubuntu 20.04 LTS Linux

pip install pickle non funziona - nessun file o directory di questo tipo