2015-05-30 2 views
1

Я прочитал несколько десятков вопросов о ImportError, но ни один из них не касается моей проблемы конкретно.Импорт работает в python, но не в django

I имеют следующую структуру:

. 
├── apps 
│   ├── accounts 
│   ├── core 
│   ├── apimanager 
│   ├── utils 
│   ├── modules 
│   │   ├── companies 
│   │   └── products 
├── assets 
│   ├── apps 
│   └── libs 
├── fabfile 
│   └── env 
├── project 
└── templates 

Все каталоги действительно имеют __init__.py.

Запуск python:

>>> from apps.modules import companies 
>>> companies 
<module 'apps.modules.companies' from 'apps/modules/companies/__init__.pyc'> 
>>> 
>>> from apps import modules 
>>> modules 
<module 'apps.modules' from 'apps/modules/__init__.pyc'> 
>>> 
>>> import apps 
>>> apps 
<module 'apps' from 'apps/__init__.pyc'> 

Запуск python manage.py shell:

Traceback (most recent call last): 
    File "./manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    ... 
    File "../django/apps/accounts/models.py", line 8, in <module> 
    from apps.modules.companies.models import Company 
ImportError: No module named modules.companies.models 

Если питон интерпретатор может импортировать все пакеты/суб-пакеты, то Django должен быть в состоянии сделать то же самое.

Что мне не хватает?

+0

Проверьте отличия в их 'sys.path' – RafaelC

+0

@ RafaelCardoso, единственное отличие - это первый элемент; в 'python' первый элемент -' '' ', а в'./manage.py' - это корневой каталог проекта. – abstractpaper

+0

Вы используете оба из одного каталога? спуститесь вниз, откуда управляется.py, и вызовите его с помощью оболочки ../manage.py. –

ответ

0

Opened a ticket об этой проблеме возможно ошибка. Ответ я получил:

Я подозреваю, что проблема в том, что ваш модуль «приложения» конфликтует с «django.apps». Django пытается импортировать «от apps.modules.companies.models import Company» по сравнению с «django.apps». Не уверен, что Django может что-то предпринять.

Таким образом, переименование apps на что-то другое является решением.