He copiado una prueba de trabajo línea por línea y solo cambié algunos nombres (al menos eso pensé) y ahora recibo este error muy críptico: (He reemplazado algunas cosas con FOO, BAR)
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
El problema es que no entiendo el error en absoluto. que significa este mensaje de error?
Seguimiento de pila completo:
Traceback (most recent call last):
File "BAR/modeling/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv
super(Command, self).run_from_argv(argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
super(Command, self).execute(*args, **options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
failures = test_runner.run_tests(test_labels)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 531, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 451, in build_suite
tests = self.test_loader.discover(start_dir=label, **kwargs)
File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 206, in discover
tests = list(self._find_tests(start_dir, pattern))
File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 267, in _find_tests
raise ImportError(msg % (mod_name, module_dir, expected_dir))
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
tests
Respuestas:
En mi experiencia, los ImportErrors extraños cuando se ejecutan pruebas son causados por un ImportError en el módulo de pruebas en sí.
Asegúrese de que su módulo de pruebas se pueda importar:
$ python manage.py shell ... >>> import foo.exports.tests
Editar:
Si eso causa un error, asegúrese de no tener un directorio
foo/exports/tests
y un archivofoo/exports/tests.py
fuente
foo/exports/tests
y un archivofoo/exports/tests.py
?tests.py
archivo automágico de Django allí. Buena atrapada. Y qué mensaje de error críptico ... :(Como dijo Daniel Hepper en un comentario anterior, intente verificar si tiene una
app/tests
carpeta y unapp/tests.py
archivo en su aplicación.Django
startapp
crea untests.py
archivo automáticamente, por lo que puede haber un archivo que no hayas notado.Si simplemente elimina el
tests.py
archivo generado automáticamente , debería funcionar. (¡Obviamente, debe verificar el contenido del archivo antes de eliminar nada!)fuente
En caso de que haya creado un directorio llamado tests y haya escrito archivos de prueba dentro de él, por ejemplo, test_views.py, test_models.py, etc. asegúrese de eliminar el archivo 'test.py' creado automáticamente por el comando 'python manage.py inicio de la aplicación
fuente
Solo para agregar a la lista de posibles casos.
Esto también puede suceder dentro de un entorno virtual cuando el paquete en el que se encuentra se instaló localmente.
En ese caso, solo necesita desinstalar la versión que se instaló y "volver a vincularla" (no conozco el término correcto) utilizando el comando de desarrollo
fuente
En mi caso, el problema fue porque traté de iniciar la tarea de prueba de django desde el enlace simbólico a la carpeta con el proyecto, no desde la ruta "real". Cuando ejecuto la tarea de prueba de django desde la carpeta del proyecto sin usar el enlace simbólico, no obtengo este error.
fuente
Intente comprobar si tiene ambos
app/tests
carpeta y una aplicación / tests.pyarchivo en su aplicación.
Por defecto, un archivo se llama automáticamente
tests.py
eliminar este archivo, el error se resolveráfuente