2011-03-21 22 views
10

Quería hacer un módulo llamado utils/django.py en mi proyecto. En la parte superior tengo la línea:python: fuerza de importación no relativa?

from django.db import models 

Sin embargo, intenta importar de sí mismo, y eso causa un error. Sé que puedo forzar una importación en relación con un antepuesto .:

from .django.db import models 

¿hay alguna manera de forzar a una importación que no es pariente?

+0

También podría cambiar el nombre del archivo. Las importaciones relativas son * altamente desaconsejables *, por ejemplo, debes 'importar myapp.stuff.django'. –

+0

Parece que está intentando importar una clase desde el archivo que está definido. Si ese es el caso, entonces puede consultar la clase db.models directamente sin importarlo. – Narcolei

+0

@JochenRitzel ¿Y cómo te propones hacer eso? ¿Agregar un número al nombre del módulo? Un guion bajo? A veces, el mismo nombre es el único que tiene sentido, y lo que está proponiendo ni siquiera intenta ser una solución al problema ... –

Respuesta

20

No. Debe habilitar explícitamente absolute imports.

from __future__ import absolute_import 
+3

Esta es la forma en que se supone que debes hacerlo en Python2. En Python3 las importaciones absolutas son predeterminadas. –