Ho un grande pezzo di codice Python 2 solo. Vuole controllare Python 3 all'inizio e uscire se viene usato python3. Così ho provato:python 2 code: se python 3 then sys.exit()
import sys
if sys.version_info >= (3,0):
print("Sorry, requires Python 2.x, not Python 3.x")
sys.exit(1)
print "Here comes a lot of pure Python 2.x stuff ..."
### a lot of python2 code, not just print statements follows
Tuttavia, l'uscita non avviene. L'output è:
$ python3 testing.py
File "testing.py", line 8
print "Here comes a lot of pure Python 2.x stuff ..."
^
SyntaxError: invalid syntax
Così, sembra che i controlli pitone tutta codice prima di eseguire qualsiasi cosa, e quindi l'errore.
C'è un modo carino per il codice python2 per verificare l'utilizzo di python3, e in tal caso stampare qualcosa di amichevole e quindi uscire?
Si potrebbe anche usare un blocco "if __name__ ==" foo "', che funziona come un 'if __name__ ==" __main __ "' ma viene eseguito quando 'foo' viene importato – inspectorG4dget
Non sarebbe considerato più * Pythonic * usare EAFP e mettere l'importazione di the_real_thing all'interno di un blocco 'try'? – martineau
@martineau: non lo farei nel caso in esame. L'importazione potrebbe benissimo avere successo e potrebbero verificarsi altri errori in 'main()'. Non vuoi includere 'the_real_thing.main() ' in try/except. –