导入错误:安装气流后无法导入名称“ClassVar”

Che*_*thu 6 python python-3.x airflow

我已按照以下链接的步骤安装 Airflow

气流安装并得到以下错误

  Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 25, in <module>
  from airflow.configuration import conf
  File "/usr/local/lib/python3.5/dist-packages/airflow/__init__.py", line 42, in <module>
  from airflow.models import DAG
  File "/usr/local/lib/python3.5/dist-packages/airflow/models/__init__.py", line 21, in 
  <module>
  from airflow.models.baseoperator import BaseOperator, BaseOperatorLink  # noqa: F401
  File "/usr/local/lib/python3.5/dist-packages/airflow/models/baseoperator.py", line 30, in 
  <module>
  from typing import Any, Callable, ClassVar, Dict, FrozenSet, Iterable, List, Optional, 
  Set, Type, Union
  ImportError: cannot import name 'ClassVar'
Run Code Online (Sandbox Code Playgroud)

有人可以在这里帮助我吗

Fre*_*ang 6

在我的情况下,我也遇到了同样的错误:

  • Ubuntu 16.04
  • 蟒蛇 3.5
  • 气流 1.10.10

经过一番检查,我发现这是一个python版本问题,python3.5不支持模块打字。ClassVar:https ://docs.python.org/3.5/library/typing.html

As introduced in PEP 526, a variable annotation wrapped in ClassVar indicates that a given attribute is intended to be used as a class variable and should not be set on instances of that class.
Run Code Online (Sandbox Code Playgroud)

并在PEP 526 中检查我发现此功能仅从 3.6 支持,哦....

因此解决方案是将 Python 版本升级到 3.6+ 以安装 Airflow 1.10。

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
sudo apt install build-essential libssl-dev libffi-dev python3.7-dev
sudo apt-get install python3.7-venv
Run Code Online (Sandbox Code Playgroud)

综上所述,进程成功执行。作为官方指南的完善,安装的环境要求为:

  • Ubuntu 16.04
  • 蟒蛇 3.6+
  • 气流 1.10.10