Apache Superset [Errno 13] 权限被拒绝:'/usr/local/lib/python3.5/site-packages/superset/app'

Apache Superset [Errno 13] Permission denied: '/usr/local/lib/python3.5/site-packages/superset/app'

我使用 Apache Superset for data exploration. I followed the installation instructions 并且在使用该应用程序时没有遇到任何问题。

但是,在我安装了community maintained docker image I tried to upload a CSV file可视化之后,出现了如下错误:

([Errno 13] Permission denied: '/usr/local/lib/python3.5/site-packages/superset/app')

我用sqlite as DB backend, and mounted the DB volume as suggested.

其他用户在不同的设置和配置下遇到了同样的问题。他们提出的问题(#4576, #4287)还没有解决。

该问题似乎与数据库访问权限无关,用户使用的不同数据库后端和配置证明了这一点。

解决方案

将以下行添加到您的 superset_config.py 文件,重建并 运行 您的 docker 图像:

import os

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

# The file upload folder, when using models with files
UPLOAD_FOLDER = BASE_DIR + '/app/static/uploads/'

# The image upload folder, when using models with images
IMG_UPLOAD_FOLDER = BASE_DIR + '/app/static/uploads/'

您还可以将路径更改为 在您的 docker 图片 .

中要保存上传文件和图片的任何位置

问题原因:

Superset 正在尝试将 CSV 文件上传到错误消息中显示的路径。该路径为root用户所有,Superset没有权限。

要解决此问题,您需要更改 Superset 上传 CSV 文件的路径。这可以通过设置如上所示的几个配置轻松完成。

这也应该可以解决上传照片以用于 Superset 用户个人资料时的问题。

上述错误主要与文件夹权限有关。 您可以通过使用 root 权限执行将其设置为 运行。

例如,在我的例子中,我在 运行ning superset runserver -d -p8080.

之后得到了这个错误

请改用命令 sudo superset runserver -d -p8080,您将能够上传您的 csv 文件。

注意:指定的其他标志和端口号可以根据需要更改。

另请注意: 只有当您使用 root 权限安装 superset 时才会出现此权限错误,即您可能不是 pip install superset使用 sudo pip install superset

希望有一天它能对某人有所帮助。