GNU/Linux >> Belajar Linux >  >> Linux

shebang env lebih suka versi 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

Ini pertama kali dijalankan sebagai skrip shell. Anda dapat meletakkan hampir semua kode shell di antara '''' dan # ''' . Kode tersebut akan dieksekusi oleh shell. Kemudian, ketika python berjalan pada file, python akan mengabaikan garis karena terlihat seperti string yang dikutip tiga kali lipat ke python.

Skrip shell menguji apakah biner ada di jalur dengan which python2 >/dev/null dan kemudian jalankan jika demikian (dengan semua argumen di tempat yang tepat). Untuk informasi lebih lanjut tentang ini, lihat Mengapa cuplikan ini dengan shebang #!/bin/sh dan exec python di dalam 4 tanda kutip tunggal berfungsi?

Catatan:Baris dimulai dengan empat ' dan tidak boleh ada spasi di antara ' keempat dan awal dari perintah shell (which ...)


Sesuatu seperti ini:

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

Perbarui Di bawah ini adalah versi yang lebih kuat dari yang sama.

#!/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. Bagaimana Cara Menginstal Python di Ubuntu 20.04 dan 18.04?

  2. Banyak Argumen Di Shebang?

  3. Bagaimana Cara Menginstal Python Versi Lama/Baru dengan Aman??

  1. Mengapa Python 2.7 Masih Versi Python Default Di Ubuntu?

  2. Tox menginstal versi pip yang salah ke lingkungan virtualnya

  3. pytest berjalan dengan versi lain dari python

  1. Bagaimana mengubah versi python default di Debian 9 Stretch Linux

  2. Cara Beralih Versi Python di Ubuntu &Debian

  3. Win-KeX Versi 2.0