2012-05-28 11 views
5

Dopo aver letto sul web, ho notato che c'era una promessa fatta che Python 2.7 avrebbe utilizzato le importazioni assolute come predefinite. Tuttavia sembra che non è il caso, e che dobbiamo ancora usareCome rendere absolute_import l'impostazione predefinita in tutti i moduli

from __future__ import absolute_import 

Non voglio il mio codice per utilizzare alcune impostazioni precedenti, quindi voglio per assicurarsi che tutti i moduli hanno questa opzione abilitata. Come si fa, senza dover ripetere questa affermazione in ogni singolo modulo?

+0

Non tanto una promessa quanto un piano vago. [Cosa c'è di nuovo in Python 2.5] (http://docs.python.org/whatsnew/2.5.html#pep-328-absolute-and-relative-imports) dice "probabilmente". –

risposta

2

from __future__ le importazioni devono essere eseguite prima e sono specifiche del modulo. Non esiste un modo semplice per applicarlo a tutti i moduli senza che la linea sia effettivamente presente in tutti i moduli.

Credo che sia possibile utilizzare grep (in caso contrario, eseguire il rollover) per indicare quale dei moduli fa non avere quella linea in essi.

Se si vuole farlo nel modo più duro, dare un'occhiata a importlib o sostituire __import__. Utilizzando uno di questi due metodi è possibile aprire il file .py, inserire la linea di

from __future__ import absolute_import 

(se non è già presente), e poi fare l'effettiva importazione. Assicurati di non aggiungere questa linea ad altri moduli oltre al tuo, poiché otterrai indubbiamente errori dai moduli che si aspettano la semantica dell'importazione relativa.

Problemi correlati