跳转到主要内容

项目环境的系统检查。

项目描述

https://img.shields.io/github/actions/workflow/status/adamchainz/django-version-checks/main.yml.svg?branch=main&style=for-the-badge https://img.shields.io/badge/Coverage-100%25-success?style=for-the-badge https://img.shields.io/pypi/v/django-version-checks.svg?style=for-the-badge https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge pre-commit

项目环境的系统检查。


通过我的书籍 提高您的Django和Git技能


需求

支持Python 3.8到3.12。

支持Django 3.2到5.1。

安装

首先,使用

pip安装

python -m pip install django-version-checks

其次,将应用程序添加到您的

INSTALLED_APPS设置

INSTALLED_APPS = [
    ...,
    "django_version_checks",
    ...,
]

第三,添加一个

VERSION_CHECKS设置,包含您要执行的版本检查(如以下文档所述)。例如

VERSION_CHECKS = {
    "python": "==3.9.*",
}

使用

请参阅介绍性博客文章

django-version-checks添加了几个

系统检查,可以帮助确保当前环境有正确的Python、数据库等版本。这在跨所有基础设施协调升级时非常有用。

请注意,django-version-checks不会检查Python依赖项的版本。这是因为不匹配的依赖项版本可能在系统检查运行之前导致

ImportError或其他导入时间问题。要检查Python依赖项的版本,请尝试pip-lock

检查使用PEP 440规范格式,通过packaging模块实现。这与pip使用的格式相同,允许在指定有效版本范围内有一定的灵活性。其中~=运算符特别有用。例如,您可以使用~=3.9.1来表示“3.9.1+,但小于3.10.0”,这样环境就可以在不更改的情况下采用补丁版本,但不能更多。

以下是对单个检查的文档说明。每个检查都占据VERSION_CHECKS字典中的一个键,并说明了其支持的规范类型。如果检查配置错误,使用不正确的类型或规范,您将看到以下系统检查错误之一

  • dvc.E001:检查配置错误。<check>期望一个<type>,但得到了<value>

  • dvc.E002:检查配置错误。<value>不是一个有效的PEP440规范。

mysql检查

此检查将当前版本的MariaDB/MySQL与给定的规范进行比较。范围可以指定为一个单独的字符串

VERSION_CHECKS = {
    "mysql": "~=10.5.8",
}

…或者是一个将数据库别名映射到它们的规范的字典

VERSION_CHECKS = {
    "postgresql": {
        "default": "~=10.5.8",
        "analytics": "~=10.4.17",
    },
}

注意:作为数据库检查,Django仅在此检查期间运行migrate或使用check --database(Django 3.1+)/ check --tags database(Django <3.1)。请参阅(《文档》)。

如果此检查失败,系统检查将报告

  • dvc.E005:对于<alias>数据库连接,当前版本的MariaDB/MySQL(<version>)与指定的范围(<range>)不匹配。

postgresql检查

此检查将当前版本的PostgreSQL与给定的规范进行比较。范围可以指定为一个单独的字符串

VERSION_CHECKS = {
    "postgresql": "~=12.2",
}

…或者是一个将数据库别名映射到它们的规范的字典

VERSION_CHECKS = {
    "postgresql": {
        "default": "~=12.2",
        "analytics": "~=13.1",
    },
}

注意:作为数据库检查,Django仅在此检查期间运行migrate或使用check --database(Django 3.1+)/ check --tags database(Django <3.1)。请参阅(《文档》)。

如果此检查失败,系统检查将报告

  • dvc.E004:对于<alias>数据库连接,当前版本的PostgreSQL(<version>)与指定的范围(<range>)不匹配。

python检查

此检查将当前版本的Python与给定的单个规范进行比较

VERSION_CHECKS = {
    "python": "~=3.9.1",
}

如果此检查失败,系统检查将报告

  • dvc.E003:当前版本的Python(<version>)与指定的范围(<range>)不匹配。

sqlite检查

此检查将当前版本的SQLite与给定的单个规范进行比较

VERSION_CHECKS = {
    "sqlite": "~=3.37",
}

注意:作为数据库检查,Django仅在此检查期间运行migrate或使用check --database(Django 3.1+)/ check --tags database(Django <3.1)。请参阅(《文档》)。

如果此检查失败,系统检查将报告

  • dvc.E006:当前版本的SQLite(<version>)与指定的范围(<range>)不匹配。

示例升级

让我们通过使用django-version-checks将Python从版本3.8升级到3.9来演示。我们有一个由CI、预发布和生产环境以及几位开发者的开发机器组成的基础设施。

首先,我们添加一个现有的检查,以确保所有环境都在Python 3.8上

VERSION_CHECKS = {
    "python": "~=3.8.6",
}

其次,我们重写规范以允许Python 3.9的版本

VERSION_CHECKS = {
    "python": ">=3.8.6,<3.10.0",
}

第三,我们升级我们的基础设施。我们可能按以下顺序升级:CI、开发环境、预发布、生产。每个环境都应自动运行manage.py check,如Django部署清单所述。

第四,我们再次更改规范,仅允许Python 3.9

VERSION_CHECKS = {
    "python": "~=3.9.1",
}

现在我们已经升级了!🎉

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django_version_checks-1.12.0.tar.gz (9.9 kB 查看哈希值)

上传时间

构建分布

django_version_checks-1.12.0-py3-none-any.whl (7.7 kB 查看哈希值)

上传时间 Python 3

由以下机构支持