首页 / 资讯中心 / 文章详情

Windows 下 Superset 安装与汉化避坑指南

Windows 下 Superset 安装与汉化避坑指南 ★ FEATURED ARTICLE
简介这份文档面向需要在Windows环境下搭建BI分析平台的开发者与数据分析人员系统整理了SuperSet的安装与汉化操作说明。SuperSet由Airbnb开源支持MySQL、Oracle、PostgreSQL、Presto、SparkSQL、Impala等多种关系数据库与大数据计算框架具备自助分析、自定义仪表盘、可视化导出、SQL编辑器及用户角色权限控制等能力。资源包内仅含1个docx文档体积约16KB以图文步骤形式记录从环境准备、pip安装、创建管理员账户、数据库初始化、加载示例数据到启动服务的完整流程并额外补充了汉化目录创建、messages.mo文件配置及config.py语言参数修改方法。目前已有1474人学习下载适合初次接触SuperSet、希望快速完成本地部署并实现中文界面的读者参考可帮助减少环境配置与汉化环节的试错成本。1. 为什么在 Windows 上装 Superset 总在第三步翻车如果你在 Windows 上敲过pip install superset大概率经历过这样的场景包是装上了但superset db upgrade一跑就报错或者fabmanager命令直接提示找不到。这不是你环境有问题而是 Superset 早期版本对 Windows 的支持本身就带着一堆坑——路径分隔符、依赖编译、命令入口每一项都可能让你卡半天。Superset 是 Airbnb 开源的 BI 数据分析与可视化平台早期叫 Caravel 和 Panoramix核心能力是自助分析、自定义仪表盘、SQL 编辑器查询以及用户/角色权限控制。它支持 MySQL、Oracle、PostgreSQL、SQLite、Redshift、Impala、SparkSQL、Greenplum、MSSQL 等一大堆数据源做数据可视化看板或者给业务团队搭自助查询平台都很合适。这篇笔记面向的是需要在 Windows 环境下把 Superset 跑起来、并且完成汉化的开发者尤其是那些不想折腾 Linux 虚拟机、就想在现有 Windows 机器上快速验证的人。下面按实际安装顺序拆解每一步都标注了容易出问题的地方。2. 前置环境与安装从 Python 到 pip 的版本选择2.1 Python 版本与虚拟环境的取舍Superset 对 Python 版本有要求早期版本在 Python 3.6 上跑得最稳Python 3.7 以上部分依赖会编译失败。我一般建议用 Python 3.6.x 配合 virtualenv 建一个独立环境避免污染系统 Python。虚拟环境的好处是Superset 依赖的 Flask、Pandas、SQLAlchemy 版本都比较敏感跟系统里其他项目的包混在一起很容易出现版本冲突。建虚拟环境的命令如下# 安装 virtualenv如果还没装 pip install virtualenv # 在项目目录下创建虚拟环境命名为 superset_env virtualenv superset_env # 激活虚拟环境Windows 下 superset_env\Scripts\activate激活后命令行前面会出现(superset_env)标识后续所有操作都在这个环境里进行。参数说明virtualenv superset_env会在当前目录生成一个独立文件夹里面包含 Python 解释器和 pip跟系统环境完全隔离。如果你用 conda也可以conda create -n superset python3.6效果类似。2.2 安装 Superset 与数据库驱动前置项装完后直接 pip 安装# 安装 superset 本体 pip install superset # 如果打算连 MySQL额外装驱动 pip install mysql-connector-python # 如果打算连 PostgreSQL pip install psycopg2这里有个常见坑pip install superset在 Windows 上可能会因为cryptography或pandas的 wheel 包不匹配而卡住。解决办法是先单独装好这两个包的预编译版本再装 superset。另外如果你公司网络走代理pip 需要加--proxy参数但这不是本文重点跳过。安装完成后用pip show superset确认版本和安装路径。记住这个路径后面初始化数据库和汉化都要用到。2.3 创建管理员账号与初始化数据库安装完第一件事是创建管理员账号# 创建管理员账号按提示输入用户名、密码、邮箱 fabmanager create-admin --app superset这条命令会交互式地让你输入用户名、密码、邮箱地址。注意密码不要设得太简单Superset 有密码强度校验太简单的会直接拒绝。如果提示fabmanager不是内部或外部命令说明 Scripts 目录没在 PATH 里用python -m flask fab create-admin替代也行。接下来初始化数据库。这一步必须在 Superset 的 bin 目录下执行否则会找不到配置文件# 先切到 Python 安装目录或虚拟环境下的 superset/bin 目录 cd superset_env\Lib\site-packages\superset\bin # 升级数据库创建表结构 python superset db upgradedb upgrade会读取 config.py 里的数据库连接串默认是 SQLite会在当前目录生成一个superset.db文件。如果你要换成 MySQL 或 PostgreSQL需要提前在 config.py 里改SQLALCHEMY_DATABASE_URI格式类似mysql://user:passwordlocalhost/superset。改完再跑db upgrade否则表会建到 SQLite 里。2.4 加载示例数据与初始化权限数据库建好后加载示例数据# 仍在 bin 目录下执行 python superset load_examples这一步会往数据库里灌入一批演示用的数据集和仪表盘方便你登录后直接看到效果。加载过程可能比较慢取决于机器性能耐心等它跑完。如果中途报错多半是数据库连接问题或者某个依赖包版本不对看报错信息里提到的表名或模块名去排查。然后是初始化角色和权限# 初始化角色和权限系统 python superset initsuperset init会创建默认角色Admin、Alpha、Gamma、Public并绑定对应权限。这一步不做的话登录进去会发现很多菜单是灰的或者直接报权限错误。2.5 启动服务与端口调整最后启动服务# 启动开发服务器-d 表示开启调试模式 python superset runserver -d # 如果要换端口比如改成 9000 python superset runserver -d -p 9000默认端口是 8088启动后在浏览器打开http://localhost:8088用刚才创建的管理员账号登录。-d参数开启调试模式代码改动会自动重载适合开发阶段生产环境不要用这个模式性能差且不安全。-p参数指定端口如果 8088 被其他程序占用了就换一个。提示Windows 防火墙可能会拦截 8088 端口的访问如果浏览器打不开先检查防火墙规则或者临时关闭防火墙测试。3. 汉化配置从 mo 文件到 config.py 的完整链路3.1 翻译目录结构与文件放置Superset 的汉化依赖 Babel 的翻译机制核心是.mo文件。你需要手动创建目录结构把翻译文件放进去# 进入 Superset 安装目录 cd superset_env\Lib\site-packages\superset # 创建翻译目录结构 mkdir translations cd translations mkdir zh cd zh mkdir LC_MESSAGES最终目录结构是superset/translations/zh/LC_MESSAGES/。这个路径必须严格对应Babel 会按 locale 查找翻译文件路径错了就加载不到。接下来下载messages.mo文件放到LC_MESSAGES目录下。官方仓库的superset/translations/zh/LC_MESSAGES/路径下有现成的 mo 文件直接下载即可。如果你想自己翻译可以下载messages.po文件用文本编辑器打开逐条翻译然后用msgfmt编译成 mo# 将 po 文件编译为 mo 文件 msgfmt messages.po -o messages.momsgfmt是 gettext 工具集里的命令Windows 下需要先安装 gettext。如果不想装直接用官方编译好的 mo 文件最省事。3.2 config.py 的关键修改项翻译文件放好后改config.py。这个文件在superset目录下用文本编辑器打开找到语言相关配置# 设置默认语言为中文 BABEL_DEFAULT_LOCALE zh # 翻译文件路径 BABEL_DEFAULT_FOLDER babel/translations # 允许的语言列表只保留中文 LANGUAGES { zh: {flag: cn, name: Chinese} }三个参数的作用BABEL_DEFAULT_LOCALE决定界面默认加载哪个语言包BABEL_DEFAULT_FOLDER指定翻译文件的根目录LANGUAGES控制语言切换菜单里显示哪些选项。如果你把en注释掉语言切换菜单里就只剩中文避免用户误切回英文。改完保存重启 Superset 服务关闭浏览器重新打开界面应该就是中文了。如果还是英文检查三件事mo 文件路径对不对、config.py 有没有保存成功、服务有没有真正重启调试模式下有时需要手动 CtrlC 再启动。3.3 汉化不生效的排查思路汉化不生效最常见的原因是 mo 文件版本跟 Superset 版本不匹配。官方仓库的翻译文件是跟着 master 分支走的如果你装的是旧版本 Superset翻译条目可能对不上导致部分菜单还是英文。解决办法是下载对应版本的 po 文件自己编译或者手动补翻译。另一个原因是浏览器缓存。Superset 的前端资源有缓存机制改了翻译文件后浏览器可能还在用旧的 JS 包。强制刷新CtrlF5或者清一下浏览器缓存再试。4. 避坑记录Windows 下装 Superset 的五个血泪教训4.1 坑一fabmanager命令找不到现象装完 superset 后敲fabmanager create-admin --app superset提示「不是内部或外部命令」。原因fabmanager的可执行文件在虚拟环境的Scripts目录下但这个目录没加到系统 PATH 里。解决要么把superset_env\Scripts加到 PATH要么直接用python -m flask fab create-admin替代。后者更稳妥不依赖 PATH 配置。4.2 坑二db upgrade报错「no such table」现象在非 bin 目录下执行python superset db upgrade报错说找不到表或者配置文件。原因Superset 的命令行入口依赖当前目录下的 config.py不在 bin 目录下执行就找不到配置。解决每次执行 superset 相关命令前先cd到superset\bin目录。可以写个批处理脚本封装这个切换动作省得每次手动敲。4.3 坑三pip 安装时 cryptography 编译失败现象pip install superset卡在cryptography或pandas的编译阶段报一堆 C 编译器错误。原因Windows 上没有 C 编译环境pip 尝试从源码编译这些包但缺少 Visual C Build Tools。解决先单独装预编译的 wheel 包pip install cryptography --only-binary :all:pandas 同理。装完再装 supersetpip 会直接复用已装好的包。4.4 坑四示例数据加载到一半中断现象python superset load_examples跑到一半报错退出数据库里只加载了部分表。原因示例数据量比较大SQLite 在高并发写入时容易锁表或者某个数据集的字段类型跟 SQLite 不兼容。解决换成 MySQL 或 PostgreSQL 作为后端数据库SQLite 只适合功能验证不适合加载大量示例数据。如果坚持用 SQLite可以分多次执行load_examples每次加载一部分。4.5 坑五汉化后部分菜单仍是英文现象config.py 改了mo 文件也放了但部分菜单项还是英文。原因mo 文件里的翻译条目不全或者 Superset 版本跟翻译文件版本不一致。解决下载对应版本的 po 文件用 Poedit 或文本编辑器补全缺失的翻译重新编译成 mo 文件替换。如果只是个别菜单也可以直接改前端模板里的硬编码文本但不推荐升级时会丢。5. 进阶技巧用批处理脚本一键启动与端口复用每次手动敲一堆命令太累我习惯写一个批处理脚本把常用操作串起来。下面这个脚本放在桌面双击就能启动 Supersetecho off REM 激活虚拟环境 call D:\superset_env\Scripts\activate.bat REM 切换到 superset bin 目录 cd /d D:\superset_env\Lib\site-packages\superset\bin REM 启动服务指定端口 8088 python superset runserver -d -p 8088 REM 如果启动失败暂停看报错 if %errorlevel% neq 0 pause这个脚本的关键点call activate.bat激活虚拟环境cd /d切换盘符和目录if %errorlevel% neq 0 pause在启动失败时暂停窗口方便看报错信息。你可以把端口改成 9000 或其他值避免跟其他服务冲突。另一个技巧是端口复用。如果你机器上 8088 被占了又不想改 Superset 配置可以用端口转发工具把 8088 映射到其他端口。但更简单的做法是直接改启动参数-p 9000Superset 本身支持动态指定端口不需要改配置文件。验证汉化是否彻底生效可以打开浏览器开发者工具看 Network 面板里加载的 JS 文件是否包含中文翻译。如果某个页面的翻译没生效检查对应的.po文件里有没有该条目的翻译。我一般会在改完翻译后把messages.mo的文件时间戳跟 Superset 版本号记在一起下次升级时直接对照避免版本错配。从那以后我每次在 Windows 上装 Superset都强制走一遍「虚拟环境 → 预编译包 → bin 目录执行 → 批处理封装」的流程再也没在环境问题上翻过车。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站