GNU/Linux >> Tutoriales Linux >  >> Linux

shebang env versión preferida de python

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

Esto se ejecuta primero como un script de shell. Puede poner casi cualquier código de shell entre '''' y # ''' . Dicho código será ejecutado por el shell. Luego, cuando python se ejecuta en el archivo, python ignorará las líneas ya que se ven como cadenas entre comillas triples para python.

El script de shell prueba si el binario existe en la ruta con which python2 >/dev/null y luego lo ejecuta si es así (con todos los argumentos en el lugar correcto). Para obtener más información sobre esto, consulte ¿Por qué funciona este fragmento con un shebang #!/bin/sh y exec python dentro de 4 comillas simples?

Nota:La línea comienza con cuatro ' y no debe haber espacio entre el cuarto ' y el inicio del comando de shell (which ...)


Algo como esto:

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

Actualizar A continuación se muestra una versión más robusta de la misma.

#!/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. Cómo cambiar la versión predeterminada de Python en Debian 9 Stretch Linux

  2. Cómo cambiar la versión de Python en Ubuntu y Debian

  3. ¿Cómo instalar Python en Ubuntu 20.04 y 18.04?

  4. ¿Argumentos múltiples en Shebang?

  5. Tox instala la versión incorrecta de pip en su entorno virtual

Cómo comprobar la versión de Python

Declaración de Python if..else

Cómo instalar Python 3.x y PIP 3 en Ubuntu 20.04 LTS

Cómo instalar Python 2.7 en Ubuntu 20.04 LTS

Cómo instalar Python 2.7 y PIP2 en Ubuntu 20.04 LTS Linux

pip install pickle no funciona - no existe tal archivo o directorio