错误:superset.views.core:意外错误没有名为“ pymysql”的模块

问题描述

我在docker中运行apache superset 0.36,并为redis和postgres使用了单独的docker。尝试连接到主机上运行的MySQL数据源时,出现错误“ ERROR:superset.views.core:Unexpected error No module named'pymysql'”

我尝试用bash设置容器“ sudo docker run -it superset_superset bash”的超级设置,然后“ pip install pymysql” ,但收到警告“警告:目录'/ home / superset /。当前用户不拥有cache / pip / http'或其父目录,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用sudo执行pip,则可能需要sudo的-H标志。“ ,它不会安装pymysql。

在容器内运行pip install pymysql时引发的错误是“正在安装收集的软件包:pymysql错误:由于环境错误而无法安装软件包:[Errno 13]权限被拒绝:'/usr/local/lib/python3.6/site -packages / pymysql'考虑使用--user选项或检查权限。“尝试pip安装pymysql --user也是同样的错误。

在此方面的任何帮助将不胜感激。

解决方法

某种程度上,错误消息已经显示了答案:

sudo -H pip install pymysql

sudo -H的美好之处

当您运行sudo时,您的环境将被传递,而有效用户将切换为root。您的环境包括〜/或home目录(环境变量HOME的值)为/ home / bijay。

pip在下载软件包之前会查找http缓存。可能出于安全性,完整性和隐私性方面的原因,pip禁用了缓存,以便不写入当前用户不拥有的缓存目录。只是告诉你它做到了。

正如它暗示的那样,使用sudo -H将在执行传递给sudo的命令之前设置HOME环境变量,使用root的主目录/ root作为$ HOME而不是用户的主目录。然后可以将缓存写入/root/.cache/pip/http且没有错误。
附带一提,您可能永远都不应该以root用户身份运行pip。

,

如果您使用的是docker-compose,请查看这篇文章:https://preset.io/blog/2020-05-18-install-db-drivers/

基本上,可以通过在运行docker/requirements-local.txt之前将它们添加到docker-compose up中来添加额外的软件包。

注意:requirements-local.txt已安装到本地生成的映像中:https://github.com/apache/incubator-superset/blob/master/Dockerfile-dev#L23

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...