annotations导入报错

转自

  「 不止于python

相关环境版本

python 3.7.10
fastapi 0.63.0
Cython 0.29.22

报错文件

# main.py
from __future__ import annotations
......# code

报错信息

1. 

is not defined
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/Cython/Build/Dependencies.py", line 1249, in cythonize_one_helper
    return cythonize_one(*m)
  File "/usr/local/lib/python3.7/dist-packages/Cython/Build/Dependencies.py", line 1225, in cythonize_one
    raise CompileError(None, pyx_file) 

 2. 

Traceback (most recent call last):
  File "/usr/lib/python3.5/py_compile.py", line 125, in compile
    _optimize=optimize)
  File "<frozen importlib._bootstrap_external>", line 735, in source_to_code
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "./prog.py", line 1
    from __future__ import annotations
    ^
SyntaxError: future feature annotations is not defined

During handling of the above exception, another exception occurred:

报错原因

1. 使用Cython版本过低

  https://github.com/cython/cython/issues/2950#issuecomment-679136993

2. 使用python3.7以下版本
    报错: https://stackoverflow.com/questions/52889746/cant-import-annotations-from-future/52890129

   根据PEP-563在py3.7中才能使用

      https://www.python.org/dev/peps/pep-0563/#enabling-the-future-behavior-in-python-3-7

报错解决

 1.升级Cython, 使用3.0版本

pip3.7 install Cython==3.0a1

2.使用python3.7以上版本

相关链接 

https://github.com/cython/cython/issues/2950

https://stackoverflow.com/questions/52889746/cant-import-annotations-from-future/52890129

https://www.python.org/dev/peps/pep-0563/#enabling-the-future-behavior-in-python-3-7

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Java中,程序包是一组相关类和接口的集合,可以用来组织和管理代码。程序包可以存储在本地计算机上的文件夹中,以便在编译和运行时使用。在这种情况下,io.swagger.annotations是一个程序包,可能包含了与Swagger有关的注解和其他类。 "程序包io.swagger.annotations不存在"可能是由以下几个原因引起的: 1. 缺少相关的依赖项:io.swagger.annotations程序包可能是从一个外部库或框架中引入的。如果没有正确地配置和添加该库或框架的依赖项,就会出现该误。 2. 误的程序包名称:在Java中,程序包的命名是严格的。如果使用了误的程序包名称(大小写误、拼写误等),编译器就无法找到对应的程序包,因此会。 解决此问题的步骤如下: 1. 检查依赖项:确保已经正确地配置了Swagger相关的依赖项。可以在项目的构建工具(如Maven、Gradle)配置文件中添加Swagger的依赖项,然后重新编译和运行程序。 2. 检查程序包名称:确保程序包名称io.swagger.annotations拼写正确,并且大小写与实际的文件夹和源代码文件相匹配。如果发现拼写误或大小写不匹配,应进行相应的更正。 3. 检查程序包路径:确保io.swagger.annotations程序包正确地存储在项目的源代码文件夹中,并且文件夹的路径与Java源代码文件的包声明相匹配。如果不匹配,将导致编译器无法找到程序包。 最后,重新编译和运行程序,应该就能够解决"程序包io.swagger.annotations不存在"的问题了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不止于python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值