我有一个将django web应用程序从Django-3.2.14
迁移到Django-4.0
的项目。迁移之后,当我运行服务器时,就会得到控制台输出中所示的错误。当我跟踪更改时,它跟踪到django-compat
包,django-background-tasks
包正在调用该包。my_env
是我的虚拟环境。
我们有最新版本的django-compat
( 1.0.15 )和django-background-tasks
( 1.2.5 )。
你能查一下这个吗?
提前谢谢你。
控制台:
(myenv) D:\New_Folder\github\project\project_name>python manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "D:\New_Folder\github\myenv\lib\site-packages\compt\__init__.py", line 46, in <module>
from django.conf.urls import url, include, handler404, handler500
ImportError: cannot import name 'url' from 'django.conf.urls' (D:\New_Folder\github\myenv\lib\site-packages\django\conf\urls\__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\threading.py", line 980, in _bootstrap_inner
self.run()
File "C:\Program Files\Python39\lib\threading.py", line 917, in run
self._target(*self._args, **self._kwargs)
File "D:\New_Folder\github\myenv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "D:\New_Folder\github\myenv\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
autoreload.raise_last_exception()
File "D:\New_Folder\github\myenv\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
raise _exception[1]
File "D:\New_Folder\github\myenv\lib\site-packages\django\core\management\__init__.py", line 398, in execute
autoreload.check_errors(django.setup)()
File "D:\New_Folder\github\myenv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "D:\New_Folder\github\myenv\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\New_Folder\github\myenv\lib\site-packages\django\apps\registry.py", line 116, in populate
app_config.import_models()
File "D:\New_Folder\github\myenv\lib\site-packages\django\apps\config.py", line 304, in import_models
self.models_module = import_module(models_module_name)
File "C:\Program Files\Python39\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "D:\New_Folder\github\myenv\lib\site-packages\background_task\models.py", line 9, in <module>
from compat import StringIO
File "D:\New_Folder\github\myenv\lib\site-packages\compat\__init__.py", line 48, in <module>
from django.conf.urls.defaults import url, include, handler404, handler500 # pyflakes:ignore
ModuleNotFoundError: No module named 'django.conf.urls.defaults'
发布于 2022-07-10 21:07:09
更新答复
遗憾的是,目前还没有支持django-background-tasks
的版本。看起来,如果不迁移到任何其他包,您就无法升级到django 4.0,它将完成与django-background-tasks
相同的工作。
旧答案
包background_task
使用的是django-compat
,新的django版本不支持它。
D:\New_Folder\github\myenv\lib\site-packages\background_task\models.py
from compat import StringIO
据我在堆栈跟踪中所见,不需要再使用django-compat
包了。background_task
包应该直接从默认的io
包中使用io
。
您将需要background_task
包的更新版本,它不再使用django-compat
包。据我所见,在没有依赖项的情况下没有新版本。
https://stackoverflow.com/questions/72930532
复制相似问题