错误:superset.views.core:意外错误没有名为';pymysql';

错误:superset.views.core:意外错误没有名为';pymysql';,mysql,docker,containers,superset,Mysql,Docker,Containers,Superset,我在docker中运行apache superset 0.36,并为redis和postgres提供了单独的docker。尝试连接到主机上运行的MySQL数据源时,出现错误“错误:superset.views.core:意外错误没有名为'pymysql'的模块” 我试着用bash超集容器“sudocker run-it超集”\u超集bash”,然后“pip安装pymysql”,但得到了警告“警告:目录'/home/superset/.cache/pip/http'或其父目录不属于当前用户,缓存已

我在docker中运行apache superset 0.36,并为redis和postgres提供了单独的docker。尝试连接到主机上运行的MySQL数据源时,出现错误“错误:superset.views.core:意外错误没有名为'pymysql'的模块”

我试着用bash超集容器“sudocker run-it超集”\u超集bash”,然后“pip安装pymysql”,但得到了警告“警告:目录'/home/superset/.cache/pip/http'或其父目录不属于当前用户,缓存已被禁用。”。请检查该目录的权限和所有者。如果使用sudo执行pip,您可能需要sudo的-H标志。“并且它不安装pymysql

在PIP安装PyySQL在容器内运行时引发的错误是“安装收集包:PyySQL错误:由于环境环境无法安装包:[ErnNO 13 ]权限被拒绝:‘/Ur/Posi/Lyb/Python 3.6/站点包/pYySQL”考虑使用-Upor选项或检查权限。“尝试了pip安装pymysql——用户也尝试了,但出现了相同的错误


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

在某种程度上,错误消息已经给出了答案:

sudo -H pip install pymysql
sudo-H

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

pip在下载软件包之前会查找http缓存。可能是出于安全、理智和隐私的综合原因,pip禁用了缓存,以免写入当前用户不拥有的缓存目录。它只是告诉您它这样做了

正如它所提示的,使用sudo-H将在执行传递给sudo的命令之前设置HOME环境变量,使用root的HOME目录/root作为$HOME,而不是用户的。然后可以在/root/.cache/pip/http中写入缓存,而不会出现错误。
作为旁注,您可能不应该以root用户身份运行pip


如果您使用的是
docker compose
,请查看本文:

基本上,在运行
docker compose up
之前,可以将额外的包添加到
docker/requirements local.txt


注意:
requirements local.txt
已安装到本地构建的映像中:

请发表您的帖子,不要发表评论。请为您的答案添加一些解释,以便其他人可以从中学习。例如,为什么您需要
sudo
此处?@NicoHaase感谢您的建议!Nico:pTried sudo-H但似乎在side docker。在尝试安装sudo时,出现“权限被拒绝”错误。以下是输出:superset@ce311b11ae08:/app$sudo-H pip安装pymysql bash:sudo:未找到命令superset@ce311b11ae08:/app$apt get-y install sudo E:无法打开锁文件/var/lib/dpkg/lock frontend-打开(13:权限被拒绝)E:无法获取dpkg前端锁(/var/lib/dpkg/lock frontend),您是root用户吗?