目录
第一步:安装paython3.7
下载python3的安装包
cd到想保存安装包的路径下下载(去官网查看最新版下载链接):
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
1解压到当前目录:
$: tar -zxvf Python-3.7.*.tgz (不同的安装包对应不同的解压方法)
安装编译器(root用户):
$: yum -y install gcc
安装make需要的依赖包(需要root用户执行):
$: yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
安装python3.7需要的依赖包(需要root用户执行),否则会报错:“ModuleNotFound:No module named ‘_ctypes’”
$: yum -y install libffi-devel
进入解压后的文件夹中,编译和安装(如果之前安装出错的朋友,在安装依赖后重新编译安装即可):
$: cd Python-3.7.*
$: ./configure
$: make&&make install
默认情况下,python3.7安装在/usr/local/bin/
第二步:修改默认python
使默认python变成python3,把之前的python命令改成python2,并软连接python3到python:
$: mv /usr/bin/python /usr/bin/python2
mv:overwrite ‘/usr/bin/python2’? 输入y
$: ln -s /usr/local/bin/python3 /usr/bin/python
备注:如果执行“符号连接的层数过多”,则执行unlink 文件就行。
[root@localhost Python-3.7.0]# mv /usr/bin/python /usr/bin/python2
mv: failed to access "/usr/bin/python2": 符号连接的层数过多
[root@localhost Python-3.7.0]# unlink /usr/bin/python2
修改默认pip
$: find / -name pip3找到pip3
软链到bin:
$: ln -s /usr/local/bin/pip3 /usr/bin/pip
如果出现这个,则执行: $:rm -rf /usr/bin/pip
修改yum文件,使之正常运行
yum不支持python3修改并保存:
$: vi /usr/libexec/urlgrabber-ext-down
修改为以下:
#! /usr/bin/python2.7
# A very simple external downloader
# Copyright 2011-2012 Zdenek Pavlas
修改yum文件
$: vi /usr/bin/yum
文件的 头为
#! /usr/bin/python2.7
但是,上面三步直接安装,安装的会是在python2的目录下,而不是新安装的python3,因为python2为默认安装。使用pip -V查看如下:
$ pip -V
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
在这个时候调用pip时会报错,因为系统还不认识pip命令是啥,需要加个连接
1、我们得知道pip装在哪里
$: whereis pip
pip: /usr/local/bin/pip2.7 /usr/local/bin/pip
2、建立连接
$: ln -s /usr/local/bin/pip2.7 /usr/bin/pip
如果报“[root@bolu-report-data001 opt]# python -V
-bash: /bin/python: No such file or directory”,则需要坐下软连接,命令如下:
$: ln -s /usr/local/bin/pip3 /usr/bin/python
如果出现:“VersionConflict”, 则将报错文件的指定版本更新成安装的版本就行。
更新后的/bin/php文件:
第三步:安装工具pip并激活虚拟环境
如果新系统尚未安装工具pip,可通过以下三步来快速完成pip的安装
$: yum -y install epel-release
$: yum install python-pip
$:pip install --upgrade pip
如果执行pip命令过程中出现“ModuleNotFoundError: No module named 'pip._internal.cli'”,则执行命令:python -m pip install --upgrade pip。
第四步:激活虚拟环境
先执行必要的安装包,防止下面依赖的包用时没有,命令如下:
$: sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
初始化虚拟机:
$: pip install virtualenv
创建和激活虚拟环境:
$:python3 -m venv venv
$: . venv/bin/activate
备注:. venv/bin/deactivate或 deactivate env
第五步:安装开始apache-superset
$: pip install apache-superset
在执行“pip install apache-superset”,出现No matching distribution found for pandas的错误提示,如果出现上面问题执行:pip install --upgrade pip,可以避免很多坑。
如果出现下面这个错误,则执行需要安装 gcc-c++之后再重新执行 pip install apache-superset。
$:yum install gcc-c++
初始化数据库
$: superset db upgrade
创建管理员账户
$: export FLASK_APP=superset
$:superset fab create-admin
加载示例数据,这一步可选,其中可以通过“ superset fab --help”查看帮助命令。
$:superset load_examples
创建默认角色和权限
$: superset init
启动(如果有防火墙,请先将端口号放开,我的端口是8080)
$: superset run -h 0.0.0.0 -p 8080 --with-threads --reload --debugger
备注后台启动:nohup superset run -h 0.0.0.0 -p 8080 --with-threads --reload --debugger &
第六步:汉化步骤
- 检查/opt/venv/lib/python3.7/site-packages/superset/translations/zh/LC_MESSAGES/目录下是否有两个文件messages.mo和messages.po。
$:cd /opt/venv/lib/python3.7/site-packages/superset/translations/zh/LC_MESSAGES/
- 回到目录/opt/venv/lib/python3.7/site-packages/superset修改config.py文件,并执行编译命令“pybabel compile -d translations”
$: cd /opt/venv/lib/python3.7/site-packages/superset
$: vim config.py
将“BABEL_DEFAULT_LOCAL”的值改成“zh”。
$: pybabel compile -d translations
执行编译命令后,zh/LC_MESSAGES/文件夹下多个message.json文件。
重启服务发现只部分汉化了,是因为我们编译时,部分翻译的英文路径找不到。
自制文件message.json
到地址https://github.com/ApacheInfra/superset/blob/master/superset/translations/zh/LC_MESSAGES/messages.po,将内容message.json内容copy至本次生成message.json文件,utf-8格式保存。上传至superset的目录zh/LC_MESSAGES/替换原来的message.json文件。
第七步: 安装过过程中的问题解答
1、连接mysql需要安装驱动
$:pip install mysql-connector-python
连接mysql格式(端口号可以不配,默认就是3306):
mysql+mysqlconnector://{username}:{password}@{host}/{database}
2、防火添加端口号:
$:firewall-cmd --zone=public --add-port=8088/tcp –permanent //放开端口号
$:firewall-cmd --reload //重新加载配置
如果出现错误“Centos7 firewall-cmd 命令报错 ModuleNotFoundError: No module named ‘gi‘”,
则vim /usr/bin/firewall-cmd修改第一行python为python2.7
运行 yum install ifconfig出现“no package ifconfig available”则执行 yum install net-tools.x86_64。
我们运行以下命令查找yum search ifconfig。
以上运行结果,我们只要分析最好一行就可以。Matched: ifconfig 这个 分割行 是用来显示 匹配结果的。
最后一行 中 冒号(:)前面的数据, (net-tools.x86_64 ) 是匹配的软件包;冒号(:)后面的数据,(Basic networking tools ) 是对前面包的描述。结合上面的信息,即 通过运行 yum search ifconfig 提示我们: 安装ifconfig 包 只需要安装 net-tools.x86_64 即可。
所以,我们执行 yum install net-tools.x86_64
-----------------------------------------------------------------------------------------
- Was unable to import superset Error: No module named 'wtforms_json'
- 解决办法: pip install WTForms-JSON
- Was unable to import superset Error: No module named 'flask_compress'
- 解决办法:pip install Flask-Compress
- Was unable to import superset Error: No module named 'flask_migrate'
- 解决办法:pip install flask-migrate
如果报:Could not find a version that satisfies the requirement flask-talisaman,
则执行:pip install flask -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
- Was unable to import superset Error: No module named 'celery'
- 解决办法:pip install celery
- Was unable to import superset Error: No module named 'flask_talisman'
- 解决办法:pip install flask-talisaman
如果不行,则执行:pip install flask_talisman -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
- Was unable to import superset Error: No module named 'flask_caching'
- 则执行:pip install flask_caching
- Was unable to import superset Error: No module named 'sqlparse'
- 则执行:pip install 'sqlparse'
- Was unable to import superset Error: No module named 'bleach'
- 则执行:pip install 'bleach'
- Was unable to import superset Error: No module named 'markdown'
- 则执行:pip install 'markdown'
- Was unable to import superset Error: No module named 'parsedatetime'
- 则执行:pip install 'parsedatetime'
13、pkg_resources.ContextualVersionConflict: (Flask 0.12 (/root/venv/lib/python3.7/site-packages), Requirement.parse('Flask<2.0,>=1.0'), {'Flask-JWT-Extended'})
则执行pip install flask==1.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
Looking in indexes: http://pypi.douban.com/simple/