我有一个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环境中运行,我发现这很奇怪。我可以通过点子冻结来验证这一点。以下是我使用的软件包的版本:
asgiref == 3.3.1
Django == 3.1.6
我在这里看到了类似的问题,这是由于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"
您可以用来manage.py
从批处理中运行自定义管理命令,并可以访问您的项目环境:
python C:\Program Files\compuweather\compuweather\manage.py send_all_clients
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句