Moo*_*oon 14 django python-3.x
目前我已将 Django 2.2 版本升级到 3.0,突然出现如下错误。
导入错误:无法从“django.utils”导入名称“6”
我检查了回溯如下。
Traceback (most recent call last):
File "c:\Users\admin\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py", line 43, in <module>
main(ptvsdArgs)
File "c:\Users\admin\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 432, in main
run()
File "c:\Users\admin\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 316, in run_file
runpy.run_path(target, run_name='__main__')
File "C:\Python37\Lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "C:\Python37\Lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "C:\Python37\Lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\production\myproject\erp_project\manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "d:\production\myproject\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File "d:\production\myproject\venv\lib\site-packages\django\core\management\__init__.py", line 377, in execute
django.setup()
File "d:\production\myproject\venv\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "d:\production\myproject\venv\lib\site-packages\django\apps\registry.py", line 92, in populate
app_config = AppConfig.create(entry)
File "d:\production\myproject\venv\lib\site-packages\django\apps\config.py", line 90, in create
module = import_module(entry)
File "d:\production\myproject\venv\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "d:\production\myproject\venv\lib\site-packages\post_office\__init__.py", line 3, in <module>
from .backends import EmailBackend
File "d:\production\myproject\venv\lib\site-packages\post_office\backends.py", line 6, in <module>
from .settings import get_default_priority
File "d:\production\myproject\venv\lib\site-packages\post_office\settings.py", line 101, in <module>
context_field_class = import_attribute(CONTEXT_FIELD_CLASS)
File "d:\production\myproject\venv\lib\site-packages\post_office\compat.py", line 45, in import_attribute
module = importlib.import_module(module_name)
File "d:\production\myproject\venv\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "d:\production\myproject\venv\lib\site-packages\jsonfield\__init__.py", line 1, in <module>
from .fields import JSONField, JSONCharField # noqa
File "d:\production\myproject\venv\lib\site-packages\jsonfield\fields.py", line 21, in <module>
from .encoder import JSONEncoder
File "d:\production\myproject\venv\lib\site-packages\jsonfield\encoder.py", line 2, in <module>
from django.utils import six, timezone
ImportError: cannot import name 'six' from 'django.utils' (d:\production\myproject\venv\lib\site-packages\django\utils\__init__.py)
Run Code Online (Sandbox Code Playgroud)
我已经检查了文件夹 Lib\site-packages\django\utils 并没有找到和 Six.py 文件,但仍然来自 Lib\site-packages\jsonfield\encode.py 包含来自 django.utils 的行导入 6,时区试图导入六但找不到。
早期版本的 django 包含文件夹 Lib\site-packages\django\utils 中的 6.py 文件。
知道如何解决这个问题吗?
简短的回答:你可能想放弃django-jsonfield。
根据回溯,您正在使用django-jsonfield包 [GitHub],这是一个已知问题 [GitHub-issue]。这取决于django.utils.six模块,但该模块已在django-3.0 中删除。
目前,您因此无法将django-3.0与django-jsonfield 一起使用,并且由于该项目的最后一次提交是从 2017 年 10 月开始,因此该项目可能不再那么“活跃”了,因此可能需要很长时间(甚至永远不会)得到修复。django-jsonfield的继任者是jsonfield2 ([GitHub])。它通过 10 月(2019 年)[GitHub-pr]的拉取请求与django-3.0兼容。
为了使用这六个模块,您可以直接使用 pip 安装它,然后相应地修改 django-jsonfield 包。我的意思是找到包中存在的文件from django.utils import six并将它们替换为import six. 然后它应该工作。在 django 3.0 中使用 djongo 时,我遇到了同样的问题。我找到了相应的文件并将其替换为上述建议。请注意,如果您正在从事生产级或企业级项目,则永远不建议这样做。我是为我的宠物项目做的。
| 归档时间: |
|
| 查看次数: |
9977 次 |
| 最近记录: |