Django ModuleNotFoundError:没有名为“asgiref”的模块

2024-09-30 16:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django服务,我们正试图与主应用程序一起计划,该应用程序定期运行,通过批处理脚本发送自动电子邮件

Django应用程序本身启动正常,但当我尝试运行批处理脚本时,我得到以下回溯:

Traceback (most recent call last):                                                                                        
File "C:\Program Files\compuweather\compuweather\webapp\management\commands\send_all_clients.py", 
line 2, in <module>     from django.core.management.base import BaseCommand                                                                   
File "C:\ProgramData\Anaconda3\lib\site-packages\django-3.2- 
py3.8.egg\django\core\management\__init__.py", line 13, in <module>                                                                                                                   
from django.apps import apps                                                                                          
File "C:\ProgramData\Anaconda3\lib\site-packages\django-3.2-py3.8.egg\django\apps\__init__.py", line 
1, in <module>       from .config import AppConfig                                                                                         
File "C:\ProgramData\Anaconda3\lib\site-packages\django-3.2-py3.8.egg\django\apps\config.py", line 7, 
in <module>         from django.utils.deprecation import RemovedInDjango41Warning                                                         
File "C:\ProgramData\Anaconda3\lib\site-packages\django-3.2-py3.8.egg\django\utils\deprecation.py", 
line 5, in <module>                                                                                                                           
from asgiref.sync import sync_to_async                                                                              
ModuleNotFoundError: No module named asgiref

考虑到我将批处理文件设置为从安装了Asgiref的anaconda环境中运行,我发现这很奇怪。我可以用pip freeze来验证这一点。以下是我正在使用的软件包的版本:

asgiref==3.3.1
Django==3.1.6

我看到了一个类似的问题here,这是由于Django和asgiref包已经过时。我已经尝试将asgiref和Django更新到最新版本(列出的版本),但也没有帮助

在查看回溯之后,我的最佳猜测是,可能有人试图使用不推荐使用的包(因此使用了deprecation.py),或者需要在某个地方追加路径。如果是前者,我是否应该使用其他方法

作为参考,以下是我尝试使用的批处理文件:

call C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3 
call activate test
"C:\ProgramData\Anaconda3\Python.exe" "C:\Program Files\compuweather\compuweather\webapp\management\commands\send_all_clients.py"

Tags: djangoinfrompyimportliblinemanagement
1条回答
网友
1楼 · 发布于 2024-09-30 16:33:08

您可以使用manage.py从批处理中运行自定义管理命令,并可以访问您的项目环境:

python C:\Program Files\compuweather\compuweather\manage.py send_all_clients

相关问题 更多 >