簡體   English   中英

從celery導入current_app給出ValueError:嘗試了相對頂級包之外的相對導入

[英]importing current_app from celery is gives ValueError: attempted relative import beyond top-level package

是的,我知道與此值錯誤相關的堆棧溢出有很多類似的問題,我嘗試了它們的所有解決方案,但是由於我是Django和python的新手,所以無法解決此問題。

我有一個名為my_backend的項目,該項目具有以下文件結構。

main_project/
   cmb_backend/
        __init__.py
        celery.py
        urls.py
    second_app/
        __init__.py
        moduleZ.py
    my_env/
       bin/
       include/
       lib/
         python 3.7/
           site-packages/
             celery/
             django_celery_beat
               admin.py

我已將celery用於定期任務,因此在主應用程序my_backend中添加了一個celery.py文件。

我還使用pip安裝了django_celery_beat,在里面,他們使用以下代碼導入了celery。

# admin.py file in the django_celery_beat lib
from celery import current_app
from celery.utils import cached_property

所以當我運行這個命令

python3 my_backend/setup_database.py

這給了我一個錯誤

ImportError: cannot import name 'current_app' from 'celery' (/Users/pankaj/Desktop/Pankaj/MyJangoProjects/My_Project/my_backend/celery.py)

所以從這個錯誤中,我發現當我在命令admin.py上面運行時,正在從celery導入current_app,但它查找的文件錯誤

因此,要解決此錯誤,我在導入語句之前使用了相對導入並添加了..但仍然無法正常工作

# admin.py file in the django_celery_beat lib
from ..celery import current_app
from ..celery.utils import cached_property

現在,我在這里出現ValueError: attempted relative import beyond top-level package

我已經嘗試了一些sys.path hack,但是我很糟糕,我仍然被困在這里。

我還檢查了所有這些問題,並嘗試了在那里提供的解決方案。

相對導入超出頂級包錯誤

兄弟包進口

相對進口量為十億次

如何在Python中進行相對導入?

是否嘗試過頂級包裝以外的相對進口?

您的錯誤可能與celery.current_app有關,您的PYTHONPATH未包含該錯誤。 確保滿足以下兩個條件:

  1. 確保celery.current_app軟件包安裝在PYTHONPATH下的某個位置。
  2. 如果使用虛擬環境,請確保已安裝celery並激活了虛擬環境。

我找到了解決此問題的方法。 正如我提到的,問題與我的主應用程序中的文件名相同,因為當我運行django_celery_beat時文件名是celery.py,它正在我的自定義celery.py文件中查找current_app,因此我已將文件名更改為my_task .py,如@cagrias所建議。

我已經在以下命令中添加了應用名稱,並且現在可以正常使用。

celery -A my_backend.task worker --loglevel=info

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM