Superset 一 1.安装

660 阅读11分钟

superset-logo-horiz.svg

Superset是Apache下的数据可视化应用, 支持多种数据源连接, 用于制作图表,构造看板,支持用户权限管理,数据导出等功能

github地址: github.com/apache/supe…
官方文档地址: superset.apache.org/docs/intro

1.安装Conda

Conda是管理Python环境的工具,可以方便的创建、切换、删除不同版本的Python环境
conda下载页面: https://www.anaconda.com/download
下载安装脚本: wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh 2.png

执行安装脚本: bash Anaconda3-2024.02-1-Linux-x86_64.sh 3.png

阅读协议后输入 yes ,选择安装目录,默认是家目录下的anaconda3目录 4.png

选择是否默认激活base环境 5.png

打开新的命令行窗口, 发现提示符多了个base前缀,默认环境为base环境,每次打开命令行窗口自动切换到base环境 1.png

取消每次打开控制台自动进入base环境: conda config --set auto_activate_base false
查看已安装环境: conda env list 6.png

2.配置conda国内源

默认conda源速度较慢,配置国内源可以显著提高下载速度
使用 conda config --show channels 显示现有源信息

7.png

添加清华源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes

或者直接编辑家目录下的 .condarc 文件

channels:
  - defaults
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

2.安装python环境

安装依赖

yum install -y python-setuptools
yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel

安装Python3.7版本的环境,并命名为 "superset"
conda create -n superset python=3.7

3.安装superset

切换到刚创建的conda环境:
conda activate superset
安装1.2版本的superset:
pip install apache-superset==1.2.0

默认数据源下载数据慢,可以用 -i 参数指定国内源
清华源: pypi.tuna.tsinghua.edu.cn/simple
阿里源: mirrors.aliyun.com/pypi/simple…
腾讯源: mirrors.cloud.tencent.com/pypi/simple
豆瓣源: pypi.douban.com/simple/
解决源不受信任问题需要在首次使用源的时候添加 --trusted-host 参数
完整命令为:
pip install apache-superset==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

安装过程中遇到的包版本不兼容导致的报错以及解决方法:
sqlalchemy:

ERROR: Ignored the following yanked versions: 0.36.6, 0.36.7, 0.36.8, 0.37.0, 0.37.1, 0.39.0b2342
ERROR: Ignored the following versions that require a different python version: 0.11.0 Requires-Python >=3.8; 0.12.0 Requires-Python >=3.8; 0.13.0 Requires-Python >=3.8; 1.0.0 Requires-Python >=3.8; 1.0.1 Requires-Python >=3.8; 1.0.6 Requires-Python >=3.8; 1.0.6rc1 Requires-Python >=3.8; 1.0.7 Requires-Python >=3.8; 1.0.8 Requires-Python >=3.8; 1.1.2 Requires-Python >=3.8; 1.2.0 Requires-Python >=3.8; 1.2.1 Requires-Python >=3.8; 1.4.0 Requires-Python >=3.8; 1.4.0rc0 Requires-Python >=3.8; 1.4.1 Requires-Python >=3.8; 1.4.2 Requires-Python >=3.8; 1.4.3 Requires-Python >=3.8; 1.4.4 Requires-Python >=3.8; 1.5.0 Requires-Python >=3.8; 1.5.0rc0 Requires-Python >=3.8; 1.5.1 Requires-Python >=3.8; 1.5.2 Requires-Python >=3.8; 1.5.3 Requires-Python >=3.8; 13.0.0 Requires-Python >=3.8; 14.0.0 Requires-Python >=3.8; 14.0.1 Requires-Python >=3.8; 14.0.2 Requires-Python >=3.8; 15.0.0 Requires-Python >=3.8; 15.0.1 Requires-Python >=3.8; 15.0.2 Requires-Python >=3.8; 16.0.0 Requires-Python >=3.8; 2.0.0 Requires-Python >=3.8; 2.0.0 Requires-Python ~=3.8; 2.0.0rc0 Requires-Python >=3.8; 2.0.0rc1 Requires-Python >=3.8; 2.0.1 Requires-Python >=3.8; 2.0.1 Requires-Python ~=3.8; 2.0.2 Requires-Python >=3.8; 2.0.3 Requires-Python >=3.8; 2.1.0 Requires-Python >=3.9; 2.1.0 Requires-Python ~=3.8; 2.1.0rc0 Requires-Python >=3.9; 2.1.1 Requires-Python >=3.9; 2.1.1 Requires-Python ~=3.8; 2.1.1rc1 Requires-Python ~=3.8; 2.1.1rc2 Requires-Python ~=3.8; 2.1.1rc3 Requires-Python ~=3.8; 2.1.2 Requires-Python >=3.9; 2.1.2 Requires-Python ~=3.8; 2.1.3 Requires-Python >=3.9; 2.1.3 Requires-Python ~=3.8; 2.1.4 Requires-Python >=3.9; 2.2.0 Requires-Python >=3.8; 2.2.0 Requires-Python >=3.9; 2.2.0rc0 Requires-Python >=3.9; 2.2.1 Requires-Python >=3.9; 2.2.2 Requires-Python >=3.9; 2.3.0 Requires-Python >=3.8; 2.3.1 Requires-Python >=3.8; 2.3.2 Requires-Python >=3.8; 2.3.3 Requires-Python >=3.8; 3.0.0 Requires-Python >=3.8; 3.0.0 Requires-Python ~=3.9; 3.0.0rc01 Requires-Python ~=3.9; 3.0.0rc2 Requires-Python ~=3.9; 3.0.0rc3 Requires-Python ~=3.9; 3.0.0rc4 Requires-Python ~=3.9; 3.0.1 Requires-Python >=3.8; 3.0.1 Requires-Python ~=3.9; 3.0.2 Requires-Python >=3.8; 3.0.2 Requires-Python ~=3.9; 3.0.3 Requires-Python >=3.8; 3.0.3 Requires-Python ~=3.9; 3.0.4 Requires-Python ~=3.9; 3.1.0 Requires-Python ~=3.9; 3.1.0rc001 Requires-Python ~=3.9; 3.1.0rc2 Requires-Python ~=3.9; 3.1.0rc3 Requires-Python ~=3.9; 3.1.0rc4 Requires-Python ~=3.9; 3.1.1 Requires-Python ~=3.9; 3.1.2 Requires-Python ~=3.9; 3.5 Requires-Python >=3.8; 3.5.1 Requires-Python >=3.8; 3.5.2 Requires-Python >=3.8; 3.6 Requires-Python >=3.8; 4.0.0 Requires-Python ~=3.9; 4.0.0rc1 Requires-Python ~=3.9; 4.0.0rc2 Requires-Python ~=3.9; 4.12.0 Requires-Python >=3.8; 4.13.0 Requires-Python >=3.8; 4.14.0 Requires-Python >=3.8; 4.15.0 Requires-Python >=3.8; 4.15.1 Requires-Python >=3.8; 4.15.2 Requires-Python >=3.8; 4.16.0 Requires-Python >=3.8; 4.17.0 Requires-Python >=3.8; 4.17.1 Requires-Python >=3.8; 4.17.2 Requires-Python >=3.8; 4.18.0 Requires-Python >=3.8; 4.18.1 Requires-Python >=3.8; 4.19.0 Requires-Python >=3.8; 4.20.0 Requires-Python >=3.8; 4.7.0 Requires-Python >=3.8; 4.8.0 Requires-Python >=3.8; 4.9.0 Requires-Python >=3.8; 5.1.0b1 Requires-Python >=3.8; 5.1.0b2 Requires-Python >=3.8; 5.1.0b3 Requires-Python >=3.8; 5.1.0b4 Requires-Python >=3.8; 5.3.1 Requires-Python >=3.8; 5.3.4 Requires-Python >=3.8; 5.3.5 Requires-Python >=3.8; 5.3.6 Requires-Python >=3.8; 5.4.0 Requires-Python >=3.8; 5.4.0rc1 Requires-Python >=3.8; 5.4.0rc2 Requires-Python >=3.8; 6.1.0 Requires-Python >=3.8
ERROR: Could not find a version that satisfies the requirement sqlalchemy-utils<0.37,>=0.36.6 (from apache-superset) (from versions: 0.1, 0.2, 0.3, 0.5, 0.6, 0.7, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.8.0, 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.9, 0.9.1, 0.10.0, 0.11.0, 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.12.4, 0.12.5, 0.13.0, 0.13.1, 0.13.2, 0.13.3, 0.14.0, 0.14.1, 0.14.3, 0.14.4, 0.14.5, 0.14.6, 0.14.7, 0.15.0, 0.15.1, 0.16.0, 0.16.1, 0.16.2, 0.16.3, 0.16.4, 0.16.5, 0.16.6, 0.16.7, 0.16.8, 0.16.9, 0.16.10, 0.16.11, 0.16.12, 0.16.13, 0.16.14, 0.16.16, 0.16.17, 0.16.18, 0.16.19, 0.16.20, 0.16.21, 0.16.22, 0.16.23, 0.16.24, 0.16.25, 0.19.0, 0.20.0, 0.22.0, 0.22.1, 0.23.0, 0.23.1, 0.23.2, 0.23.3, 0.23.5, 0.24.0, 0.24.1, 0.24.2, 0.24.3, 0.24.4, 0.25.0, 0.25.1, 0.25.2, 0.25.3, 0.25.4, 0.26.0, 0.26.2, 0.26.3, 0.26.5, 0.26.6, 0.26.7, 0.26.8, 0.26.9, 0.26.10, 0.26.11, 0.26.12, 0.26.13, 0.26.14, 0.26.15, 0.26.16, 0.26.17, 0.27.0, 0.27.1, 0.27.2, 0.27.3, 0.27.4, 0.27.5, 0.27.6, 0.27.7, 0.27.8, 0.27.9, 0.27.10, 0.27.11, 0.28.0, 0.28.1, 0.28.2, 0.28.3, 0.29.0, 0.29.1, 0.29.2, 0.29.3, 0.29.4, 0.29.5, 0.29.6, 0.29.7, 0.29.8, 0.29.9, 0.30.0, 0.30.1, 0.30.2, 0.30.3, 0.30.4, 0.30.5, 0.30.6, 0.30.7, 0.30.8, 0.30.9, 0.30.10, 0.30.11, 0.30.12, 0.30.13, 0.30.14, 0.30.15, 0.30.16, 0.30.17, 0.31.0, 0.31.1, 0.31.2, 0.31.3, 0.31.4, 0.31.5, 0.31.6, 0.32.0, 0.32.1, 0.32.2, 0.32.3, 0.32.4, 0.32.5, 0.32.6, 0.32.7, 0.32.8, 0.32.9, 0.32.11, 0.32.12, 0.32.13, 0.32.14, 0.32.15, 0.32.16, 0.32.17, 0.32.18, 0.32.19, 0.32.21, 0.33.0, 0.33.1, 0.33.2, 0.33.3, 0.33.4, 0.33.5, 0.33.6, 0.33.8, 0.33.9, 0.33.10, 0.33.11, 0.34.0, 0.34.1, 0.34.2, 0.35.0, 0.36.0, 0.36.1, 0.36.2, 0.36.3, 0.36.4, 0.36.5, 0.37.2, 0.37.3, 0.37.4, 0.37.5, 0.37.6, 0.37.7, 0.37.8, 0.37.9, 0.38.0, 0.38.1, 0.38.2, 0.38.3, 0.39.0, 0.40.0, 0.41.0, 0.41.1, 0.41.2)
ERROR: No matching distribution found for sqlalchemy-utils<0.37,>=0.36.6
pip install sqlalchemy-utils==0.36.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sqlalchemy-utils==0.36.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

MarkupSafe:

Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
    from superset.cli import superset
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 18, in <module>
    from flask import current_app, Flask
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/__init__.py", line 14, in <module>
    from jinja2 import escape
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/__init__.py", line 12, in <module>
    from .environment import Environment
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/environment.py", line 25, in <module>
    from .defaults import BLOCK_END_STRING
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/defaults.py", line 3, in <module>
    from .filters import FILTERS as DEFAULT_FILTERS  # noqa: F401
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/filters.py", line 13, in <module>
    from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markupsafe/__init__.py)
pip install MarkupSafe==2.0.1

importlib-metadata:

Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
    from superset.cli import superset
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 21, in <module>
    from superset.app import create_app
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 29, in <module>
    from superset.extensions import (
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/extensions.py", line 104, in <module>
    celery_app = celery.Celery()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/local.py", line 509, in __getattr__
    module = __import__(self._object_origins[name], None, None, [name])
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/app/__init__.py", line 5, in <module>
    from celery import _state
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/_state.py", line 17, in <module>
    from celery.utils.threads import LocalStack
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/utils/__init__.py", line 19, in <module>
    from .nodenames import nodename, nodesplit, worker_direct
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/utils/nodenames.py", line 9, in <module>
    from kombu.entity import Exchange, Queue
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/entity.py", line 9, in <module>
    from .serialization import prepare_accept_content
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/serialization.py", line 456, in <module>
    for ep, args in entrypoints('kombu.serializers'):  # pragma: no cover
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/utils/compat.py", line 93, in entrypoints
    for ep in importlib_metadata.entry_points().get(namespace, [])
AttributeError: 'EntryPoints' object has no attribute 'get'
pip install importlib-metadata==2.1.1

cryptography:

Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
    from superset.cli import superset
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 21, in <module>
    from superset.app import create_app
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 46, in <module>
    from superset.security import SupersetSecurityManager
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/security/__init__.py", line 17, in <module>
    from superset.security.manager import SupersetSecurityManager  # noqa: F401
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/security/manager.py", line 53, in <module>
    from superset.utils.core import DatasourceName, RowLevelSecurityFilterType
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 71, in <module>
    from cryptography.hazmat.backends.openssl.x509 import _Certificate
ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509'
pip install cryptography==3.2.1

Markdown:

logging was configured successfully
2024-04-30 00:41:07,621:INFO:superset.utils.logging_configurator:logging was configured successfully
2024-04-30 00:41:07,640:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>
/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask_caching/__init__.py:120: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
  "Flask-Caching: CACHE_TYPE is set to null, "
No PIL installation found
2024-04-30 00:41:07,860:INFO:superset.utils.screenshots:No PIL installation found
Failed to create app
Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
    app_initializer.init_app()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
    self.init_app_in_ctx()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
    self.configure_data_sources()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
    ConnectorRegistry.register_sources(module_datasource_map)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
    module_obj = __import__(module_name, fromlist=class_names)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
    from superset.connectors.base.views import DatasourceModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
    from superset.views.base import SupersetModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
    from . import (
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
    class AlertModelView(SupersetModelView):  # pylint: disable=too-many-ancestors
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
    True,
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
    "markdown.extensions.codehilite",
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
    md = Markdown(**kwargs)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
    configs=kwargs.get('extension_configs', {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
    ext = self.build_extension(ext, configs.get(ext, {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
    entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
    return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
2024-04-30 00:41:08,380:ERROR:superset.app:Failed to create app
Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
    app_initializer.init_app()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
    self.init_app_in_ctx()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
    self.configure_data_sources()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
    ConnectorRegistry.register_sources(module_datasource_map)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
    module_obj = __import__(module_name, fromlist=class_names)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
    from superset.connectors.base.views import DatasourceModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
    from superset.views.base import SupersetModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
    from . import (
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
    class AlertModelView(SupersetModelView):  # pylint: disable=too-many-ancestors
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
    True,
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
    "markdown.extensions.codehilite",
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
    md = Markdown(**kwargs)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
    configs=kwargs.get('extension_configs', {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
    ext = self.build_extension(ext, configs.get(ext, {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
    entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
    return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
Traceback (most recent call last):
  File "/home/madao/anaconda3/envs/py37/bin/superset", line 8, in <module>
    sys.exit(superset())
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 1254, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 1297, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 542, in get_command
    rv = info.load_app().cli.get_command(ctx, name)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 381, in load_app
    app = call_factory(self, self.create_app)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 119, in call_factory
    return app_factory()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 70, in create_app
    raise ex
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
    app_initializer.init_app()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
    self.init_app_in_ctx()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
    self.configure_data_sources()
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
    ConnectorRegistry.register_sources(module_datasource_map)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
    module_obj = __import__(module_name, fromlist=class_names)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
    from superset.connectors.base.views import DatasourceModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
    from superset.views.base import SupersetModelView
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
    from . import (
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
    class AlertModelView(SupersetModelView):  # pylint: disable=too-many-ancestors
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
    True,
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
    "markdown.extensions.codehilite",
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
    md = Markdown(**kwargs)
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
    configs=kwargs.get('extension_configs', {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
    ext = self.build_extension(ext, configs.get(ext, {}))
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
    entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
  File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
    return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
pip install Markdown==3.3.3

完整的包列表如下:

Package                Version
---------------------- -----------
aiohttp                3.8.6
aiosignal              1.3.1
alembic                1.9.4
amqp                   2.6.1
apache-superset        1.2.0
apispec                3.3.2
async-timeout          4.0.3
asynctest              0.13.0
attrs                  23.2.0
Babel                  2.14.0
backoff                2.2.1
billiard               3.6.4.0
bleach                 3.3.1
Brotli                 1.1.0
cachelib               0.1.1
celery                 4.4.7
certifi                2024.2.2
cffi                   1.15.1
charset-normalizer     3.3.2
click                  7.1.2
colorama               0.4.6
contextlib2            21.6.0
convertdate            2.4.0
cron-descriptor        1.4.3
croniter               2.0.5
cryptography           3.2.1
decorator              5.1.1
defusedxml             0.7.1
dnspython              2.3.0
email-validator        1.3.1
exceptiongroup         1.2.1
Flask                  1.1.4
Flask-AppBuilder       3.4.5
Flask-Babel            2.0.0
Flask-Caching          1.11.1
Flask-Compress         1.15
Flask-JWT-Extended     3.25.1
Flask-Login            0.4.1
Flask-Migrate          4.0.7
Flask-OpenID           1.3.0
Flask-SQLAlchemy       2.5.1
flask-talisman         1.1.0
Flask-WTF              0.14.3
frozenlist             1.3.3
geographiclib          2.0
geopy                  2.4.1
graphlib_backport      1.1.0
gunicorn               20.0.4
h11                    0.14.0
holidays               0.10.3
humanize               4.6.0
idna                   3.7
importlib-metadata     2.1.1
importlib-resources    5.12.0
isodate                0.6.1
itsdangerous           1.1.0
Jinja2                 2.11.3
jsonschema             4.17.3
kombu                  4.6.11
korean-lunar-calendar  0.3.1
Mako                   1.2.4
Markdown               3.3.3
MarkupSafe             2.0.1
marshmallow            3.19.0
marshmallow-enum       1.5.1
marshmallow-sqlalchemy 0.26.1
msgpack                1.0.5
multidict              6.0.5
numpy                  1.21.6
outcome                1.3.0.post0
packaging              24.0
pandas                 1.2.5
parsedatetime          2.6
pathlib2               2.3.7.post1
pgsanity               0.2.9
pip                    24.0
pkgutil_resolve_name   1.3.10
polyline               2.0.2
prison                 0.2.1
py                     1.11.0
pyarrow                3.0.0
pycparser              2.21
PyJWT                  1.7.1
PyMeeus                0.5.12
pyparsing              2.4.7
pyrsistent             0.19.3
PySocks                1.7.1
python-dateutil        2.9.0.post0
python-dotenv          0.21.1
python-geohash         0.8.5
python3-openid         3.2.0
pytz                   2024.1
PyYAML                 6.0.1
redis                  5.0.4
retry                  0.9.2
selenium               4.11.2
setuptools             69.0.3
simplejson             3.19.2
six                    1.16.0
slackclient            2.5.0
sniffio                1.3.1
sortedcontainers       2.4.0
SQLAlchemy             1.3.20
SQLAlchemy-Utils       0.36.8
sqlparse               0.3.0
trio                   0.22.2
trio-websocket         0.11.1
typing-extensions      3.10.0.2
urllib3                2.0.7
vine                   1.3.0
webencodings           0.5.1
Werkzeug               1.0.1
wheel                  0.42.0
wsproto                1.2.0
WTForms                2.3.3
WTForms-JSON           0.3.5
yarl                   1.9.4
zipp                   3.15.0
zstandard              0.21.0

4.初始化

初始化superset数据库: superset db upgrade
生成 ~/.superset/superset.db 文件, superset默认使用Sqlite数据库
创建管理员用户:
export FLASK_APP=superset
flask fab create-admin
Superset 初始化: superset init

5.启动

5.1 直接启动 

使用superset命令直接启动,一般用来测试,生产环境不适用
superset run -h 0.0.0.0 -p 8787 --with-threads --reload --debugger

5.1 使用gunicon

gunicorn是一款服务器应用,能够兼容多种Web框架,Superset基于Flask构建,能够使用gunicorn启动  安装gunicorn: pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
启动命令: /usr/local/python3/bin/gunicorn --worker-class=gevent -D --workers 5 --timeout 1200 --bind 0.0.0.0:8787 --access-logfile=/home/superset/logs/success.log --log-level debug --error-logfile=/home/superset/logs/error.log "superset.app:create_app()" --capture-output
参数说明:
--workers:指定进程个数
--worker-class: 工作模式
--timeout:worker 进程超时时间,超时会自动重启
--bind:绑定本机地址,即为 Superset 访问地址
--daemon/-D:后台运行
--access-logfile: 指定日志文件
--log-level:日志级别   --error-logfile:错误日志文件

停止应用: kill -9 $( ps -ef | grep superset | grep -v grep |awk '{print $2}')

访问页面: http://localhost:8787/login/, 用户名密码即为初始化时设置的值 8.png

9.png 至此, 安装配置完成

6.docker方式安装

使用docker可以直接拉取Superset镜像,并运行容器,免去了手动安装部署以及包冲突的解决   docker安装可以参考 菜鸟教程安装docker
1.拉取镜像: docker pull apache/superset:1.2.0
2.运行容器: docker run --name superset -d -p 8787:8787 apache/superset:1.2.0
其它的操作有:
查看运行的容器: docker ps
查看所有容器: docker ps -a
启动容器: docker start CONTAINER ID
停止容器: docker stop CONTAINER ID