Um script pode verificar sua versão em Python e, se for o Python 3, reinicie-se usando o Python 2. Adicione o seguinte perto da cabeça do script:
if sys.version > '3':
python2 = os.popen('which python2 2> /dev/null').read().rstrip()
if python2:
args = sys.argv[:]
args.insert(0,python2)
os.execv(python2,args)
else:
sys.exit("%s requires Python Version 2 (python2 not in PATH)" % os.path.basename(__file__))
Isso usa o comando which
do sistema para localizar python2
no PATH
do ambiente. Em seguida, ele se relança com isso (ou aborta se não conseguir encontrá-lo).
Note que o script precisa ser uma sintaxe válida do Python 3 para ser iniciado no Python 3.
Além disso, qualquer saída deve ser liberada antes da chamada execv
ou ela será perdida. Adicionar, por exemplo, sys.stdout.flush()
pouco antes da chamada para execv
liberar qualquer declaração print
.