2016-09-14 106 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 

我在單獨的模塊中的所有我的枚舉。該模塊是這樣的,而位於同一目錄內的項目:

enum directory screenshot

每當我跑通過pycharm或終端的一切項目似乎按預期方式工作。

工人的出發點是這樣的:

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 

,因爲我使用Python 2.7我使用enum34這是使用PIP安裝。

請讓我知道如果還有什麼我應該提供的問題。

回答

0

那麼它看起來像某種工作周圍,但按照這個答案的建議: How to accomplish relative import in python

我搬到大部分項目裏面包含所有的人的「主」模塊。然後我能夠: 而不是from enums.MpStore import MpStore
我現在使用from stuff.enums.MpStore import MpStore「stuff」是新的模塊名稱。

雖然我很想聽到更好的方法...