Django 1.5.1 ‘ImportError: No hay un módulo llamado urls’ al ejecutar pruebas

Comencé el proyecto con Django 1.5. Tengo las siguientes URL, vistas y pruebas de la aplicación de perfil.

Cuando navego en localhost:8000/profiles funciona bien servidor de ejecución

pero cuando ejecuto la prueba para la aplicación de perfil ./manage.py test profile falla con la siguiente excepción

  File "/site-packages/django/core/urlresolvers.py", line 342, in RegexURLResolver.urlconf_module self =  340 return self._urlconf_module 341 except AttributeError: --> 342 self._urlconf_module = import_module(self.urlconf_name) 343 return self._urlconf_module 344 File "/site-packages/django/utils/importlib.py", line 35, in import_module name = 'yoda.urls' package = None 32 break 33 level += 1 34 name = _resolve_name(name[level:], package, level) ---> 35 __import__(name) 36 return sys.modules[name] ImportError: No module named urls 

urls.py principal

 from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'', include('profile.urls', namespace='profile')), url(r'^admin/', include(admin.site.urls)), ) 

perfiles de urls de aplicaciones

 from django.conf.urls import patterns, url urlpatterns = patterns('profile.views', url(r'^u/(?P[\-_\.\w\d]+)/$', view='profile_detail', name='detail'), url(r'^profiles/$', view='profile_list', name='list'), ) 

Visitas al perfil

 from django.shortcuts import render from django.contrib.auth.decorators import login_required from django.db.models.signals import post_save from profile import signals from profile.models import User @login_required def profile_list(request, template='profiles/profile_list.html'): """ Profiles list """ return render(request, template, {'profiles': []}) @login_required def profile_detail(request, username, template='profiles/profile_detail.html'): """ Profile details """ return render(request, template) # Connect signals and senders post_save.connect(signals.user_created, sender=User) 

perfil.pruebas

 from django.core.urlresolvers import reverse from django.test import TestCase from profile.tests.factories import UserFactory class UrlsTest(TestCase): """ Testing urls for category application """ def setUp(self): self.user = UserFactory.build() def get(self, url, follow=False): return self.client.get(url, follow=follow) def test_list_profiles(self): """ Page with the list of profiles """ self.client.login(username=self.user.username, password='pass') print(reverse('profile:list')) res = self.get(reverse('profile:list')) self.assertTrue(res.status_code, 200) self.assertTemplateUsed('profile/profile_list.html') 

ajustes

 import os import sys here = lambda * x: os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)) PROJECT_NAME = 'yoda' PROJECT_ROOT = here('../..') root = lambda * x: os.path.abspath(os.path.join(os.path.abspath(PROJECT_ROOT), *x)) sys.path.insert(0, root('yoda')) sys.path.insert(0, PROJECT_ROOT) sys.path.insert(0, root('apps')) ... ROOT_URLCONF = 'yoda.urls' 

¿Qué puede causar problemas como este? En el proyecto con la misma configuración y en Django 1.4.5 funciona bien.

Depuración interna de Django

django.core.urlresolvers:263 depurar Django django.core.urlresolvers:263 . Cuando ROOT_URLCONF='yoda.urls' falla con los errores que se muestran arriba, pero probé yoda.yoda.urls y funcionó. Estoy confundido acerca de este problema, todavía estoy tratando de solucionarlo.

 ipdb> __import__('yoda.yoda.urls')  

Pequeña actualización

Cuando recibe ROOT_URLCONF de la configuración, tenemos el siguiente error

 > /Users/sultan/.virtualenvs/yoda/lib/python2.7/site-packages/django/core/urlresolvers.py(351)url_patterns() 350 def url_patterns(self): --> 351 patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 352 try: ipdb> l 346 self._urlconf_module = import_module(self.urlconf_name) 347 return self._urlconf_module 348 349 @property 350 def url_patterns(self): --> 351 patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 352 try: 353 iter(patterns) 354 except TypeError: 355 raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name) 356 return patterns ipdb> self.urlconf_module *** ImportError: No module named urls 

Si creó el archivo urls.py fuera de la aplicación llamada yoda, configure el

 ROOT_URLCONF = 'urls' 

si creó urls.py en un módulo, entonces establezca

 ROOT_URLCONF = 'modulename.urls' 

Prueba con esto