Как импортировать правильный пакет (python-django)

У меня есть приложение django, в которое я добавил сельдерей. В приложении django у меня есть пакет под названием 'parser', 'api'. Я настроил сельдерей, следуя следующему руководству: Первые шаги с Django. В пакете парсера есть models.py. Вы 'task.py' упаковываете 'api'? Когда я пытаюсь сделать из моделей импорта парсера в пакете api. Я получаю следующую ошибку: Нет модуля с именем models

Я посмотрел и обнаружил, что следующий файл импорта: lib / python2.7 / lib-dynload / parser.x86_64-linux-gnu.so

webapp/               
  manage.py         
  api/       
    __init__.py
    models.py
    views.py
    tasks.py
    ...
  parser/       
    __init__.py
    models.py
    views.py
    ...
  settings/
    __init__.py
    base.py
    celery.py
    dev.py
    live.py
    local.py
    urls.py
    wsgi.py

На случай, если мне понадобится «models.py» пакета парсера. Команда, которую вы используете для запуска сельдерея, следующая: celery -A settings worker --loglevel=info. Когда я запускаю сельдерей в manage.py, беру нужный файл: python manage.py celery -A settings worker --loglevel=info

api / task.py

from __future__ import absolute_import, division, print_function, unicode_literals
import time
from celery import task
from parser.models import FileUploadProcess # Error import


@task()
def test_task(param1):
    print("Test task called. Param: {}".format(param1))
    return 42


@task()
def parse_file(file_candidate, candidate_id):
    FileUploadProcess(candidate_id=candidate_id, is_process=True).save()
    # parse file
    time.sleep(15)
    FileUploadProcess.objects.filter(candidate_id=candidate_id).update(is_process=False)

Может как-нибудь подсказать мне Импорт правильный пакет?


person Krasimir    schedule 18.10.2014    source источник


Ответы (1)


'из моделей импорта парсеров'

Вам нужно использовать вот так:

 from parser.models import ClassName

где ClassName - это имя класса, который вы хотите импортировать

или просто

 import parser.models as models
person Zav    schedule 18.10.2014
comment
Какой базовый каталог вы запускаете из скрипта? Похоже, вы импортируете модуль синтаксического анализатора python по умолчанию в свой каталог - person Zav; 18.10.2014
comment
Может, парсер попробовать переименовать во что-нибудь другое? - person Zav; 18.10.2014
comment
Переименование пакета, скорее всего, решит проблему, но оно должно оставаться таким, как сейчас. Команда: celery -A settings worker --loglevel=info запускается из папки webapp. - person Krasimir; 18.10.2014
comment
stackoverflow.com/questions/6031584/ может это поможет? - person Zav; 18.10.2014