安装 apache-airflow 时如何解决 requests 和 zipp 不兼容的问题?

use*_*628 5 airflow

我正在按照视频教程“Windows 10 上的 Apache Airflow 安装”来安装 apache-airflow。当我pip install apache-airflow在 WSL2 Ubuntu 中执行此操作时,它会提示

\n
ERROR: apache-airflow-providers-http 2.0.3 has requirement requests>=2.26.0, but you\'ll have requests 2.22.0 which is incompatible.\nERROR: importlib-resources 5.4.0 has requirement zipp>=3.1.0; python_version < "3.10", but you\'ll have zipp 1.0.0 which is incompatible.\n
Run Code Online (Sandbox Code Playgroud)\n

提供更多细节,看起来像这样

\n
Collecting apache-airflow\n  Downloading apache_airflow-2.2.4-py3-none-any.whl (5.3 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 5.3 MB 4.1 MB/s\nRequirement already satisfied: cryptography>=0.9.3 in /usr/lib/python3/dist-packages (from apache-airflow) (2.8)\nCollecting markdown<4.0,>=2.5.2\n  Downloading Markdown-3.3.6-py3-none-any.whl (97 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 97 kB 4.4 MB/s\nCollecting sqlalchemy<1.4.0,>=1.3.18\n  Downloading SQLAlchemy-1.3.24-cp38-cp38-manylinux2010_x86_64.whl (1.3 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 1.3 MB 5.2 MB/s\nCollecting connexion[flask,swagger-ui]>=2.10.0\n  Downloading connexion-2.12.0-py2.py3-none-any.whl (94 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 94 kB 2.7 MB/s\nCollecting unicodecsv>=0.14.1\n  Downloading unicodecsv-0.14.1.tar.gz (10 kB)\nCollecting docutils<0.17\n  Downloading docutils-0.16-py2.py3-none-any.whl (548 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 548 kB 8.2 MB/s\nCollecting apache-airflow-providers-ftp\n  Downloading apache_airflow_providers_ftp-2.0.1-py3-none-any.whl (15 kB)\nCollecting apache-airflow-providers-http\n  Downloading apache_airflow_providers_http-2.0.3-py3-none-any.whl (21 kB)\nCollecting alembic<2.0,>=1.5.1\n  Downloading alembic-1.7.6-py3-none-any.whl (210 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 210 kB 5.9 MB/s\nCollecting iso8601>=0.1.12\n  Downloading iso8601-1.0.2-py3-none-any.whl (9.7 kB)\nCollecting setproctitle<2,>=1.1.8\n  Downloading setproctitle-1.2.2-cp38-cp38-manylinux1_x86_64.whl (36 kB)\nCollecting argcomplete<3.0,>=1.10\n  Downloading argcomplete-2.0.0-py2.py3-none-any.whl (37 kB)\nCollecting flask<2.0,>=1.1.0\n  Downloading Flask-1.1.4-py2.py3-none-any.whl (94 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 94 kB 3.3 MB/s\nCollecting clickclick>=1.2\n  Downloading clickclick-20.10.2-py2.py3-none-any.whl (7.4 kB)\nCollecting tabulate<0.9,>=0.7.5\n  Downloading tabulate-0.8.9-py3-none-any.whl (25 kB)\nCollecting flask-wtf<0.15,>=0.14.3\n  Downloading Flask_WTF-0.14.3-py2.py3-none-any.whl (13 kB)\nCollecting httpx\n  Downloading httpx-0.22.0-py3-none-any.whl (84 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 84 kB 2.3 MB/s\nCollecting flask-appbuilder==3.4.4\n  Downloading Flask_AppBuilder-3.4.4-py3-none-any.whl (1.9 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 1.9 MB 10.5 MB/s\nCollecting termcolor>=1.1.0\n  Downloading termcolor-1.1.0.tar.gz (3.9 kB)\nCollecting marshmallow-oneofschema>=2.0.1\n  Downloading marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl (5.8 kB)\nCollecting werkzeug>=1.0.1,~=1.0\n  Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 298 kB 9.9 MB/s\nCollecting pygments<3.0,>=2.0.1\n  Downloading Pygments-2.11.2-py3-none-any.whl (1.1 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 1.1 MB 5.7 MB/s\nCollecting rich>=9.2.0\n  Downloading rich-11.2.0-py3-none-any.whl (217 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 217 kB 11.7 MB/s\nCollecting flask-session<=0.4.0,>=0.3.1\n  Downloading Flask_Session-0.4.0-py2.py3-none-any.whl (7.5 kB)\nCollecting deprecated>=1.2.13\n  Downloading Deprecated-1.2.13-py2.py3-none-any.whl (9.6 kB)\nCollecting markupsafe<2.1.0,>=1.1.1\n  Downloading MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl (30 kB)\nCollecting lockfile>=0.12.2\n  Downloading lockfile-0.12.2-py2.py3-none-any.whl (13 kB)\nCollecting dill<0.4,>=0.2.2\n  Downloading dill-0.3.4-py2.py3-none-any.whl (86 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 86 kB 4.5 MB/s\nCollecting psutil<6.0.0,>=4.2.0\n  Downloading psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 283 kB 10.3 MB/s\nRequirement already satisfied: blinker in /usr/lib/python3/dist-packages (from apache-airflow) (1.4)\nCollecting croniter>=0.3.17\n  Downloading croniter-1.3.4-py2.py3-none-any.whl (17 kB)\nCollecting pendulum~=2.0\n  Downloading pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl (155 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 155 kB 11.1 MB/s\nCollecting importlib-metadata>=1.7; python_version < "3.9"\n  Downloading importlib_metadata-4.11.2-py3-none-any.whl (17 kB)\nCollecting sqlalchemy-jsonfield~=1.0\n  Downloading SQLAlchemy_JSONField-1.0.0-py3-none-any.whl (10 kB)\nCollecting apache-airflow-providers-imap\n  Downloading apache_airflow_providers_imap-2.2.0-py3-none-any.whl (16 kB)\nCollecting cattrs!=1.7.*,~=1.1; python_version > "3.6"\n  Downloading cattrs-1.10.0-py3-none-any.whl (29 kB)\nRequirement already satisfied: jinja2<3.1,>=2.10.1 in /usr/lib/python3/dist-packages (from apache-airflow) (2.10.1)\nCollecting python-nvd3~=0.15.0\n  Downloading python-nvd3-0.15.0.tar.gz (31 kB)\nCollecting gunicorn>=20.1.0\n  Downloading gunicorn-20.1.0-py3-none-any.whl (79 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 79 kB 7.5 MB/s\nCollecting itsdangerous<2.0,>=1.1.0\n  Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)\nCollecting flask-caching<2.0.0,>=1.5.0\n  Downloading Flask_Caching-1.10.1-py3-none-any.whl (34 kB)\nCollecting importlib-resources~=5.2; python_version < "3.9"\n  Downloading importlib_resources-5.4.0-py3-none-any.whl (28 kB)\nRequirement already satisfied: pyjwt<3 in /usr/lib/python3/dist-packages (from apache-airflow) (1.7.1)\nCollecting python3-openid~=3.2\n  Downloading python3_openid-3.2.0-py3-none-any.whl (133 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 133 kB 11.3 MB/s\nCollecting tenacity>=6.2.0\n  Downloading tenacity-8.0.1-py3-none-any.whl (24 kB)\nCollecting wtforms<3.0.0\n  Downloading WTForms-2.3.3-py2.py3-none-any.whl (169 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 169 kB 13.4 MB/s\nCollecting python-dateutil<3,>=2.3\n  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 247 kB 25.6 MB/s\nCollecting colorlog<7.0,>=4.0.2\n  Downloading colorlog-6.6.0-py2.py3-none-any.whl (11 kB)\nCollecting attrs<21.0,>=20.0\n  Downloading attrs-20.3.0-py2.py3-none-any.whl (49 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 49 kB 6.1 MB/s\nRequirement already satisfied: jsonschema~=3.0 in /usr/lib/python3/dist-packages (from apache-airflow) (3.2.0)\nCollecting apache-airflow-providers-sqlite\n  Downloading apache_airflow_providers_sqlite-2.1.0-py3-none-any.whl (15 kB)\nCollecting flask-login<0.5,>=0.3\n  Downloading Flask-Login-0.4.1.tar.gz (14 kB)\nCollecting packaging>=14.0\n  Downloading packaging-21.3-py3-none-any.whl (40 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 40 kB 5.6 MB/s\nCollecting python-slugify<5.0,>=3.0.0\n  Downloading python-slugify-4.0.1.tar.gz (11 kB)\nCollecting python-daemon>=2.2.4\n  Downloading python_daemon-2.3.0-py2.py3-none-any.whl (35 kB)\nCollecting lazy-object-proxy\n  Downloading lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 60 kB 4.9 MB/s\nCollecting graphviz>=0.12\n  Downloading graphviz-0.19.1-py3-none-any.whl (46 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 46 kB 3.9 MB/s\nRequirement already satisfied: requests<3,>=2.9.1 in /usr/lib/python3/dist-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow) (2.22.0)\nCollecting inflection<0.6,>=0.3.1\n  Downloading inflection-0.5.1-py2.py3-none-any.whl (9.5 kB)\nRequirement already satisfied: PyYAML<6,>=5.1 in /usr/lib/python3/dist-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow) (5.3.1)\nCollecting swagger-ui-bundle<0.1,>=0.0.2; extra == "swagger-ui"\n  Downloading swagger_ui_bundle-0.0.9-py3-none-any.whl (6.2 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 6.2 MB 8.2 MB/s\nCollecting Mako\n  Downloading Mako-1.1.6-py2.py3-none-any.whl (75 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 75 kB 5.2 MB/s\nRequirement already satisfied: click<8.0,>=5.1 in /usr/lib/python3/dist-packages (from flask<2.0,>=1.1.0->apache-airflow) (7.0)\nCollecting httpcore<0.15.0,>=0.14.5\n  Downloading httpcore-0.14.7-py3-none-any.whl (68 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 68 kB 7.6 MB/s\nCollecting charset-normalizer\n  Downloading charset_normalizer-2.0.12-py3-none-any.whl (39 kB)\nRequirement already satisfied: certifi in /usr/lib/python3/dist-packages (from httpx->apache-airflow) (2019.11.28)\nCollecting rfc3986[idna2008]<2,>=1.3\n  Downloading rfc3986-1.5.0-py2.py3-none-any.whl (31 kB)\nCollecting sniffio\n  Downloading sniffio-1.2.0-py3-none-any.whl (10 kB)\nCollecting Flask-SQLAlchemy<3,>=2.4\n  Downloading Flask_SQLAlchemy-2.5.1-py2.py3-none-any.whl (17 kB)\nRequirement already satisfied: colorama<1,>=0.3.9 in /usr/lib/python3/dist-packages (from flask-appbuilder==3.4.4->apache-airflow) (0.4.3)\nCollecting Flask-OpenID<2,>=1.2.5\n  Downloading Flask_OpenID-1.3.0-py3-none-any.whl (9.3 kB)\nCollecting apispec[yaml]<4,>=3.3\n  Downloading apispec-3.3.2-py2.py3-none-any.whl (27 kB)\nCollecting prison<1.0.0,>=0.2.1\n  Downloading prison-0.2.1-py2.py3-none-any.whl (5.8 kB)\nCollecting sqlalchemy-utils<1,>=0.32.21\n  Downloading SQLAlchemy_Utils-0.38.2-py3-none-any.whl (100 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 100 kB 10.1 MB/s\nCollecting Flask-Babel<3,>=1\n  Downloading Flask_Babel-2.0.0-py3-none-any.whl (9.3 kB)\nCollecting marshmallow-enum<2,>=1.5.1\n  Downloading marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB)\nCollecting email-validator<2,>=1.0.5\n  Downloading email_validator-1.1.3-py2.py3-none-any.whl (18 kB)\nCollecting marshmallow<4,>=3\n  Downloading marshmallow-3.14.1-py3-none-any.whl (47 kB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\x

小智 4

更新系统:$ sudo apt-get update

安装 python3-zipp: $ sudo apt-get install python3-zipp

安装 Airflow: $ pip3 install apache-airflow