Apache Superset源码编译部署咨询:无需python setup.py install可行吗?
Debian上Apache Superset源码编译部署问题解答
1. 能不能不用python setup.py install就部署到Apache2?
当然可以!不过得换个思路操作,不用全局安装,而是靠虚拟环境+WSGI的方式来运行:
- 先创建Python虚拟环境(强烈建议用Python3.8以上版本,毕竟Superset早就彻底放弃Python2.7支持了,用2.7大概率会踩一堆坑),比如执行
python3 -m venv superset-venv创建,再用source superset-venv/bin/activate激活环境。 - 进入Superset源码目录,在虚拟环境里安装全量依赖:
pip install -r requirements.txt,所有包都装在虚拟环境里,完全不碰系统全局的Python包。 - 最后配置Apache2的mod_wsgi模块,让它指向虚拟环境里的Superset实例就行,这样就不用全局执行
setup.py install了。
这种方式虽然步骤多一点,但胜在干净,不会污染系统环境,后续维护也更方便。
2. 编译时碰到的SQLAlchemy相关错误(结合常见坑支招)
你贴的错误内容截断了,但我碰到过不少类似情况,大概率是这几个原因:
- Python版本不对:你提到的路径是
/usr/local/lib/python2.7,但Superset从2.x版本开始就不再支持Python2.7了,用2.7装依赖肯定会出问题。赶紧切换到Python3.8+,Debian上直接执行apt install python3.8 python3.8-venv就能搞定。 - 权限不够:如果直接用全局Python装包,可能会因为没有系统权限导致安装失败。要么用虚拟环境(首推),要么加
--user参数:pip install --user -r requirements.txt,把包装在用户目录下,不碰系统级文件。 - 依赖版本冲突:SQLAlchemy的版本和Superset要求的不匹配,比如旧版Superset可能固定要1.3.x的SQLAlchemy,你不小心装了更高版本。先看源码目录里的
requirements.txt里写的SQLAlchemy版本,然后手动安装对应版本:pip install sqlalchemy==<指定版本号>。 - 系统编译依赖缺失:Debian上编译某些Python包需要系统级的工具和库,比如
gcc、libpq-dev(连接PostgreSQL要用)、libssl-dev这些。先把这些装上:apt install gcc libpq-dev libssl-dev python3-dev(Python3环境下用python3-dev)。
另外提一句,官方其实更推荐用pip install -e .(开发模式安装)代替python setup.py install,这种方式会把源码目录软链接到虚拟环境里,改代码也不用重新安装,还能避免不少安装时的奇怪问题。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

