2016-09-14 4 views
1

다음 오류는 셀러리 작업자를 통과했을 때만 발생합니다. 터미널에서 다음 명령을 :셀러리 작업이 프로젝트 내부에서 모듈의 ImportError를 가져올 수 없습니다.

celery -A MarketPlaceTasks worker --loglevel=info 

Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 218, in trace_task 
    R = retval = fun(*args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 398, in __protected_call__ 
    return self.run(*args, **kwargs) 
    File "/home/nick/mpcrawler2/MarketPlaceTasks.py", line 65, in get_item_data 
    logger, request, run_data, store_config, app_config = setup_task(payload) 
    File "/home/nick/mpcrawler2/MarketPlaceTasks.py", line 33, in setup_task 
    store_config = ConfigReader.read_store_config(request.Store) 
    File "/home/nick/mpcrawler2/shared/ConfigReader.py", line 22, in read_store_config 
    from singletons.StoreData import StoreData 
    File "/home/nick/mpcrawler2/singletons/StoreData.py", line 3, in <module> 
    from models.StoreConfig import StoreConfig 
    File "/home/nick/mpcrawler2/models/StoreConfig.py", line 3, in <module> 
    from enums.MpStores import MpStore 
ImportError: No module named enums.MpStores 

내가 별도의 모듈 내 모든 열거 있습니다. 이 모듈은 다음과 같습니다 및 프로젝트와 같은 디렉토리 내에 위치 : 나는 pycharm 또는 터미널 모든 것을 통해 프로젝트를 실행할 때마다

enum directory screenshot

의도 한대로 작동하는 것 같다.

작업자의 출발점은 다음과 같습니다

from celery import Celery 

app = Celery('tasks', broker='*some ampq address here*') 

__init__.py 파일이 비어 있습니다. 열거 파일은 다음과 같이 :

from enum import Enum 

# noinspection SpellCheckingInspection 
class MpStore(Enum): 
    somevalue = 1 
    someothervalue = 2 
    etc = 3 

내가 주사위를 사용하여 설치 enum34을 사용하고 파이썬 2.7을 사용하고있다.

내가 질문에 제공해야 할 것이 있으면 알려주십시오.

답변

0

음이 주위에 작업의 일종처럼 보이지만,이 답변의 조언을 다음 How to accomplish relative import in python

나는 그들 모두를 포함하는 "주"모듈 내부 프로젝트의 대부분을 이동했다. 그 때 나는 할 수 있었다 : from enums.MpStore import MpStore
의 대신에 나는 지금 from stuff.enums.MpStore import MpStore 새로운 단위 인 "stuff"를 사용한다.

나는 더 나은 방법을 듣고 싶습니다 ...

관련 문제