django 在Pytnon 3.6.5上使用注解

gmxoilav  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(131)

我正在做一个项目,我被要求使用责任链编写一些验证代码。我目前在我的机器上使用python 3.9.2,但docker上的项目是3.6.5
这段代码在我的机器上运行得很好,但在Docker上会出错:

from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any, Optional

class Handler(ABC):
    """
    The Handler interface declares a method for building the chain of handlers.
    It also declares a method for executing a request.
    """

    @abstractmethod
    def set_next(self, handler: Handler) -> Handler:
        pass

    @abstractmethod
    def handle(self, request) -> Optional[str]:
        pass

字符串
显示的错误如下:

from __future__ import annotations
django_1    |     ^
django_1    | SyntaxError: future feature annotations is not defined


有没有办法让代码在python 3.6.5上工作?

zqry0prt

zqry0prt1#

  • 更新:*
    TLDRPython 3.6+已到达循环结束,更新为Python >=3.7

正如@ForceBru所指出的,annotations作为__future__的一部分是在Python 3.7+中引入的,所以你需要手动添加de依赖关系(或者升级到python版本,我建议这样做)。
一个名为future-annotations的(deprecated)软件包可能是一个允许旧系统继续工作的解决方案。按照PyPi说明:
pip install future-annotations

相关问题