simple_settings.LazySettings导入报错:无法从django.core.cache导入get_cache
问题分析与解决方案
问题重现
导入操作仅在GitHub Actions工作流中失败,本地环境正常运行,报错信息如下:
from simple_settings import LazySettings /opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/simple_settings/__init__.py:1: in <module> from .models import Settings /opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/simple_settings/models.py:2: in <module> from django.core.cache import get_cache E ImportError: cannot import name 'get_cache' from 'django.core.cache' (/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/django/core/cache/__init__.py)
依赖包清单:
certifi==2022.12.7 chromedriver_autoinstaller==0.4.0 django_simple_settings==0.3.1 jira==3.4.1 openapi_core==0.16.5 pytest==7.2.0 pytest_schema==0.1.1 python_dateutil==2.8.2 PyYAML==6.0 requests==2.28.1 selenium==4.8.2 simple_settings==1.2.0 six==1.16.0 urllib3==1.26.13
环境:Python 3.10,GitHub Actions使用Ubuntu-latest。
问题原因与是否有其他开发者遇到
很多开发者都碰到过这个问题。根源在于你使用的simple_settings==1.2.0版本中,代码硬编码导入了django.core.cache.get_cache,但这个API在Django 1.10版本被标记为弃用,Django 3.0及以上版本直接移除了该接口。
本地环境正常是因为你本地安装的Django版本较低(低于3.0),仍保留这个旧API;而GitHub Actions中安装依赖时,未指定Django版本,pip自动拉取了最新的Django版本,导致API不存在,触发导入错误。
解决办法
- 指定兼容的Django版本:在依赖清单中添加
Django<3.0,强制安装保留get_cache接口的旧版Django,适配simple_settings==1.2.0。 - 升级simple_settings到最新版本:该问题在
simple_settings后续版本中已被修复,新版本替换了get_cache为Django推荐的缓存API,移除了对旧版Django的依赖限制。 - 移除不必要的依赖:如果你的项目实际不需要
simple_settings的Django相关功能,可检查是否能删除django_simple_settings或调整simple_settings的使用方式,避免触发Django相关的导入逻辑。
内容的提问来源于stack exchange,提问作者MG9901
相关产品推荐
相关产品推荐

