2014-10-18 93 views
0

我有一個django應用程序,我添加了芹菜。在django應用程序中,我有一個名爲'parser''api'的程序包。我按照以下教程配置芹菜:First steps with Django。在解析器包中,我有'models.py'。你是否'task.py' package'api'。當我嘗試從解析器導入模型''在api包中執行'時。我收到以下錯誤:無模塊命名模式如何導入正確的包(python-django)

我看了看,發現下面的導入文件: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) 

可以以某種方式告訴我正確的導入包?

回答

0

'from parser import models'

您需要使用是這樣:

from parser.models import ClassName 

,其中類名是要導入

或只是

import parser.models as models 
+0

我再次得到了同樣的錯誤類的名稱。 – Krasimir 2014-10-18 09:44:40

+0

什麼是從腳本運行的基本目錄?看起來像你導入默認的Python [解析器模塊](https://docs.python.org/3.3/library/parser.html)而不是你的目錄中的一個 – Zav 2014-10-18 09:47:26

+0

可能試圖將解析器重命名爲其他東西? – Zav 2014-10-18 09:48:34