2012-07-14 16 views
6

Posso inserire:Come forzare l'intero pacchetto a utilizzare una direttiva __future__?

from __future__ import absolute_import 

all'interno __init__.py al livello superiore dir sul mio pacchetto e che la GARANZIA absolute_import sarà applicato a tutto il codice che viene eseguito all'interno che pacchetto o sotto-pacchetti?

O dovrei inserire quella direttiva in ogni modello che esegue un'importazione assoluta?

Gestisco un pacchetto Python e sto cercando di mantenere il mio codice il più semplice possibile per migrare a Python3 quando sarà il momento. Non posso farlo subito perché le mie dipendenze non sono ancora su Python3.

+0

'2to3' li risolverà per te quando vorrai cambiare. – katrielalex

+3

@katrielalex: dove "fixing" significa "rimozione", che non sarebbe nemmeno necessario, poiché Python 3 semplicemente ignora tutte le importazioni correnti di "__future__'. –

+0

Si noti che a partire da Python 3.5, per la prima volta da Python 2.6, è stata introdotta una nuova direttiva '__future__'' generator_stop'. [Vedi PEP 479] (https://www.python.org/dev/peps/pep-0479/). – gerrit

risposta

8

No, __future__ le importazioni sono valide solo per un singolo file. Dovrai mettere questa linea all'inizio di ogni file sorgente Python.

Dal documentation:

Un futuro affermazione è una direttiva per il compilatore che un particolare modulo deve essere compilato utilizzando la sintassi o semantiche saranno disponibili in una versione futura di Python specificato.

Problemi correlati