2011-05-12 13 views
7

Estoy usando Django 1.3.0 con Python 2.7.1. En todas las pruebas que escribo las siguientes importaciones tengo la ImportError arriba:ImportError: no se pueden importar las señales de nombre

 
from django.utils import unittest 
from django.test.client import Client 

La traza completa:

 
    File "C:\Program Files (x86)\j2ee\plugins\org.python.pydev.debug_1.6.3.2010100513\pysrc\runfiles.py", line 342, in __get_module_from_str 
    mod = __import__(modname) 
    File "C:/Users/benjamin/workspace/BookIt/src/BookIt/tests\basic_flow.py", line 11, in 
    from django.test.client import Client 
    File "C:\Python27\lib\site-packages\django\test\__init__.py", line 5, in 
    from django.test.client import Client, RequestFactory 
    File "C:\Python27\lib\site-packages\django\test\client.py", line 21, in 
    from django.test import signals 
ImportError: cannot import name signals 
ERROR: Module: basic_flow could not be imported. 

Cualquier idea por qué sucede esto?

+1

He leído esta [pregunta] (http://stackoverflow.com/questions/4707111/importerror-cannot-import-name-modulea), ¿podría ser porque ** Client ** se importó dos veces? una vez en 'C: \ Python27 \ lib \ site-packages \ django \ test \ __ init __. py' y nuevamente en mi prueba' C:/Users/benjamin/workspace/BookIt/src/BookIt/tests \ basic_flow.py'. Si esto es todo, ¿cómo puedo importar el ** Cliente ** a mi prueba? –

+0

Solo importaría si el Cliente importador crea una importación circular, es decir, el archivo_A importa el archivo_B y el archivo_B importa el archivo_A. No importa si las importaciones no están llenas. Python aún debe analizar el módulo para extraer los elementos individuales. A veces, las importaciones circulares son necesarias, así que si ese es tu caso, puedes envolver las importaciones en conflicto en un bloque 'try', usando' ImportError' como tu excepción. –

+0

Encontré este problema cuando, desde un shell de Python, traté de importar para importar mis modelos django. Falló (debido a que no había ningún conjunto de módulos de configuración), lo manejé y traté de importarlos nuevamente, y obtuve este error. De alguna manera, este proceso puso mi espacio de nombres de módulo en un estado sucio, pero @ BenjaminK. Pensó que algo se importaba dos veces me hizo darme cuenta de que esto estaba sucediendo. –

Respuesta

5

@Hugo tenía razón en que era un problema de settings.py. Pero no tuve ese problema al ejecutar el entorno de Django. Pero cuando quise ejecutar pruebas unitarias una a una (no usé la prueba de Pydev como prueba unitaria), no se ejecutó. Lo que tenía que hacer era añadir la información del módulo de configuración de Django, así que por ahora lo que estoy haciendo es añadir las siguientes líneas a mis pruebas de unidad:

 
from django.core import management; 
import BookIt.settings as settings; 
management.setup_environ(settings) 

Esto carga la configuración de mi proyecto Django y me permiten a ejecutar como una prueba regular Si alguien tiene una mejor sugerencia sobre cómo configurar esto de forma más limpia en Pydev, por favor, hágamelo saber.

2

Tuve el mismo problema hace un minuto. Investigando me di cuenta de que el problema estaba en mi archivo settings.py *.

Compruebe si tiene problemas con Django para encontrar correctamente su archivo de configuración.

Este mensaje de error no tiene sentido.

* IIRC Django busca el archivo settings.py, si no se encuentra, busca la variable de entorno DJANGO_SETTINGS_MODULE y prueba eso.

+0

No creo que haya un problema con mi archivo 'settings.py'. Cuando agrego la siguiente línea a las importaciones: 'from BookIt.settings import ADMIN_MEDIA_PREFIX' funciona bien. –

-1

Esto es fácil de resolver. Si ya ha escrito settings.py (lo más probable) solo navegue en el directorio que contiene el archivo "settings.py" y ejecútelo.

1] pitón 2] configuración de importación

Estos comandos deben hacer el truco. Luego vaya a cualquier carpeta y continúe con la ejecución.

Cuestiones relacionadas