superset BI windows环境下部署(测试验证)

官网:superset.org.cn/

创建项目目录

我这里是在windows系统下进行部署, 创建 G:\myPython\superset\文件夹

切换到命令行,进入该文件夹。

创建虚拟环境

virtualenv superset 创建一个虚拟环境,因为superset依赖库众多,担心和其他项目出现依赖冲突,所以在虚拟环境中进行部署

superset\Scripts\activate 激活刚才创建的虚拟环境

pip install apache_superset 安装apache_superset 如果速度慢,也可以使用国内镜像源

pip install apache_superset -i https://mirrors.aliyun.com/pypi/simple/

初始化superset数据库

superset db upgrade

错误提示: "Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory."

执行一下set FLASK_APP=superset 即可

提示使用了默认的SECRET_KEY,需要在G:\myPython\superset\superset\Lib\site-packages\superset\config.py文件里面进行改写,并提示使用openssl rand -base64 42命令生成。

由于我的电脑没有安装openssl库,所以到slproweb.com/products/Wi...:

下载并安装。

生成SECRET_KEY,并修改config.py文件:

继续执行:superset db upgrade

出现TypeError,调用marshmallow库时候出现了不应该出现的关键字参数。

直觉感觉是marshmallow库版本的问题,查看安装superset的时候安装的marshmallow库版本是4.0.0 先删除:pip uninstall marshmallow

先使用一个不存在的版本号,查看可以通过pip安装的版本号:

可以看到4.0.0是最新的版本,且是大版本升级。试着安装低版本的:

继续执行:superset db upgrade这次终于正常了。

创建登录账号

superset fab create-admin

加载用例数据

superset load_examples

初始化角色和权限

superset init

启动superset

superset run -p 8088 --with-threads --reload --debugger

打开http://127.0.0.1:8088/即可访问,使用创建的管理员即可登录成功。

登录后发现界面一直在加载中,查看命令行superset有WARNING信息: Unable to load SQLAlchemy dialect shillelagh.multicorn2: No module named 'psycopg2'

pip install psycopg2 安装模块

修改默认语言

config.py

请注意,开发 Web 服务器(通过 superset runflask run 运行)并不适用于生产环境使用。 你可以在 NGINX 或 Apache 上运行 Superset,但推荐使用 Gunicorn 的异步模式。

pip install gunicorn

gunicorn --workers 5 --timeout 120 --bind 0.0.0.0:8787 "superset.app:create_app()" --daemon

执行后报错: 提示没有模块'fcntl'

原因

fcntl docs.python.org/3/library/f... 为python标准库中的一个模块,属于Unix Specific,负责操作文件锁,当使用python进行写文件时,如果多个进程同时写同一个文件,那么可能会存在问题,fcntl就是用来避免这个问题,使用系统锁的机制来保证同时只有一个进程写文件。很显然,这个模块是为linux系统准备,windows python中是不自带的,所以当我们在windows中运行使用了fcntl模块的py时,就会报错,模块无法找到。通过mock一个假的fcntl.py放到python库中即可。

python 复制代码
#新建fcntl.py
def fcntl(fd, op, arg=0):
    return 0
 
def ioctl(fd, op, arg=0, mutable_flag=True):
    if mutable_flag:
        return 0
    else:
        return ""
 
def flock(fd, op):
    return
 
def lockf(fd, operation, length=0, start=0, whence=0):
    return
相关推荐
鹿导的通天塔4 小时前
99%的人都不知道Codex 的 goal 神技!完整设置及提示词模板教学
后端
ltl6 小时前
Transformer 原论文怎么训出来的:8 张 P100、12 小时、warmup 4000 步
后端
why技术6 小时前
AI Coding开始进入第四个时代,我还没上车呢!
前端·人工智能·后端
程序猿追7 小时前
我搭了个网页工具:输入关键词,SERP API 自动吐出比价 Excel
后端
Lee川7 小时前
RAG 实战:从一篇掘金文章出发,拆解检索增强生成的全链路
前端·人工智能·后端
Lee川8 小时前
MCP 高德地图实战:当 AI 学会使用工具,一个协议如何重塑大模型的行动边界
前端·人工智能·后端
楼田莉子8 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
程序员cxuan8 小时前
Codex 把我家烂网给优化后,我 TM 直接原地起飞了。
人工智能·后端·程序员
IT_陈寒8 小时前
Redis批量删除踩了坑,原来DEL命令不是万能的
前端·人工智能·后端
叫我少年9 小时前
C# 命名空间与 using 指令 — 文件范围、全局导入、别名
后端