Sto provando a scrivere un programma compatibile avanzato e mi chiedevo quale fosse il modo "migliore" per gestire il caso in cui sono necessarie importazioni diverse.Soluzione standard per supportare Python 2 e Python 3
Nel mio caso specifico, sto usando ConfigParser.SafeConfigParser()
da Python2 che diventa configparser.ConfigParser()
in Python3.
Finora l'ho fatto funzionare utilizzando una prova, tranne per l'importazione o utilizzando un condizionale per la versione di Python (utilizzando sys
). Entrambi funzionano, ma mi chiedevo se ci fosse una soluzione raccomandata (forse una che non ho ancora provato).
ETA: Grazie a tutti. Ho usato six.moves
senza problemi.
Ci sono tutti i tipi di motivi a parte la versione python perché un'importazione potrebbe generare un'eccezione! Quindi condizionare su sys.version_info deve essere il migliore delle due idee. – nigel222
@ nigel222 le importazioni dallo stdlib non dovrebbero generare eccezioni; se loro hanno problemi molto più grandi. Il controllo della versione è più fragile e non ti dà niente. – tzaman
Non era esplicitamente interessato solo con stdlib piuttosto che con l'importazione condizionale in generale. Anche i "più grandi problemi" sono più comuni di quanto si possa pensare, se il sistema è un desktop gestito da qualcuno senza background IT (hobbista, ricercatore universitario, ecc.) Preferirei conoscerli direttamente piuttosto che dover eseguire il debug di un importazione errata che "funzionava"! – nigel222