Próbuję napisać zgodny program do przodu i zastanawiałem się, jaki "najlepszy" sposób postępowania z przypadkiem, w którym potrzebny jest inny import.Standardowe rozwiązanie do obsługi Pythona 2 i Pythona 3
W moim konkretnym przypadku używam ConfigParser.SafeConfigParser()
z Python2, który staje się configparser.ConfigParser()
w Python3.
Do tej pory zrobiłem to działając albo za pomocą try-oprócz importu lub używając warunku na wersji Pythona (używając sys
). Oba działają, ale zastanawiałem się, czy istnieje zalecane rozwiązanie (może jeszcze nie próbowałem).
ETA: Dziękuję wszystkim. Użyłem six.moves
bez problemów.
Istnieje wiele różnych powodów poza wersją python, dlaczego import może rzucić wyjątek! Więc warunek sys.version_info musi być lepszy z dwóch pomysłów. – nigel222
@ nigel222 import ze stdlib nie powinien generować wyjątków; jeśli tak, masz znacznie większe problemy. Sprawdzanie wersji jest bardziej kruche i nic Ci nie daje. – tzaman
Nie dotyczyło to wyraźnie tylko stdlib, a nie ogólne importowanie warunkowe. Również "Większe problemy" są bardziej powszechne, niż mogłoby się wydawać, jeśli system jest komputerem stacjonarnym obsługiwanym przez kogoś, kto nie ma wykształcenia informatycznego (hobbista, badacz uniwersytecki itp.). Wolałbym wiedzieć o nich bezpośrednio, zamiast debugować niewłaściwy import, który "działał"! – nigel222