Mam duży fragment kodu tylko Python 2. Aby sprawdzić Python 3 na początku i wyjść, jeśli użyto python3. Tak więc próbowałem:kod Pythona 2: jeśli python 3 to 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
Jednak wyjście nie nastąpi. Wyjście jest:
$ python3 testing.py
File "testing.py", line 8
print "Here comes a lot of pure Python 2.x stuff ..."
^
SyntaxError: invalid syntax
Tak, wygląda na to, kontroli Pythona z cały kod przed wykonaniem czegokolwiek, a więc o błędzie.
Czy istnieje dobry sposób sprawdzenia, czy python3 jest używany, a jeśli tak, wydrukuj coś przyjaznego, a następnie zakończ?
Można również użyć bloku 'if __name__ ==" foo "', który działa jak 'if __name__ ==" __main __ "', ale jest wykonywany, gdy 'foo' jest importowany – inspectorG4dget
Czy nie byłoby to uważane za bardziej * Pythonic * aby korzystać z EAFP i po prostu umieścić import obiektu the_real_thing w bloku 'try'? – martineau
@martineau: Nie zrobiłbym tego w tej sprawie. "Import" może bardzo dobrze się powieść, a inne błędy mogą się zdarzyć w 'main()'. Nie chcesz załączać 'the_real_thing.main() ' w try/except. –