2016-06-10 8 views
0

Ich habe einen Python-Code, den ich mit Python3 bleiben soll. Aber manchmal vergesse ich es ein python3 Code ist und führen Sie es wie folgt aus:elegante Möglichkeit, automatisch von Python zu Python3 zu wechseln

$ python foo.py 

Ich nehme eine Strategie wie folgt aus:

#!/usr/bin/python3 
# -*- coding: utf-8 -*- 
import sys,os,warnings 

if sys.version_info < (3,0): 
    sys.argv.insert(0,__file__) 
    warnings.warn("Switch back to python3 automatically") 
    os.execv("/usr/bin/python3",sys.argv) 

Gibt es eine elegante Möglichkeit, das Gleiche zu tun?

+2

Da Sie '#!/Usr/bin/python3' einfügen, starten Sie es einfach mit './Foo.py'. – polku

+1

Und wenn Sie Python3 benötigen: Führen Sie das Skript nicht magisch erneut aus, was zu allen möglichen Brüchen führen kann. Lass das Skript einfach krächzen und sterben. – dhke

+0

@polku Ich weiß. Aber der Code ist ein Modul des Hauptprogramms, unter __name__ == "__main__" gibt es einen Testfall. Ich werde es nicht "chmod + x" machen. Ich teste es mit "python3 foo.py". – wonghang

Antwort

0

Wenn Sie es nicht ausführbar machen wollen, dann können Sie ein kleines Skript erstellen run_foo.sh

#!/bin/sh 
python3 foo.py 

dann

./run_foo.sh 

Ich denke, es ist immer noch besser als ein execv in Ihrem Code für die persönliche Bequemlichkeit.

Verwandte Themen