2012-05-28 5 views
5

Nachdem ich im Internet gelesen hatte, bemerkte ich, dass es ein Versprechen gab, dass Python 2.7 absolute Importe als Standard verwenden würde. Allerdings scheint es nicht der Fall ist, und dass wir noch verwendenWie man absolute_import zum Standard in allen Modulen macht

from __future__ import absolute_import 

Ich möchte nicht meinen Code einige Legacy-Einstellungen verwenden, so dass ich möchte sicherstellen, dass alle Module diese aktiviert. Wie macht man das, ohne diese Aussage in jedem einzelnen Modul wiederholen zu müssen?

+0

Nicht so sehr ein Versprechen als ein vager Plan. [Was ist neu in Python 2.5] (http://docs.python.org/whatsnew/2.5.html#pep-328-absolute-and-relative-imports) sagt "wahrscheinlich". –

Antwort

2

from __future__ Importe müssen zuerst durchgeführt werden und sind modulspezifisch. Es gibt keine einfache Möglichkeit, diese für alle Module zu aktivieren, ohne dass die Zeile in allen Modulen enthalten ist.

Ich glaube, Sie können grep verwenden (wenn nicht, rollen Sie Ihre eigenen), um Ihnen zu sagen, welche Ihrer Module nicht diese Zeile in ihnen haben.

Wenn Sie es auf die harte Tour machen wollen, schauen Sie sich entweder importlib an oder ersetzen Sie __import__. Mit einem dieser beiden Methoden Sie die .py Datei öffnen konnten, legen Sie die

from __future__ import absolute_import 

Linie (falls nicht bereits vorhanden), und führen Sie dann den eigentlichen Import. Achten Sie darauf, dass Sie diese Zeile nicht zu anderen Modulen als Ihren eigenen hinzufügen, da Sie zweifellos Fehler von Modulen erhalten, die die relative Importsemantik erwarten.

Verwandte Themen