指南 3个标注团队操作手册:提升标注速度与质量

排查安装问题

在安装Label Studio时可能会遇到错误。请按照以下步骤解决这些问题。

运行最新版本的Label Studio

许多错误可能在补丁版本或维护版本中已修复。在启动Label Studio之前,请确保通过升级安装来运行最新版本的Label Studio。

关于缺少包的报错

如果出现缺少软件包的错误提示,请先安装这些软件包,然后再次尝试安装Label Studio。确保您在干净的Python环境中运行Label Studio,例如虚拟环境。

对于Windows用户,默认安装可能无法构建lxml包。建议从非官方的Windows二进制文件手动安装。如果您使用的是64位Windows并运行Python 3.8或更高版本,请运行pip install lxml‑4.5.0‑cp38‑cp38‑win_amd64.whl进行安装。

Label Studio 错误信息

如果在安装过程中遇到其他错误,请尝试重新运行安装程序。

pip install --ignore-installed label-studio

OpenBLAS blas_thread_init: 线程X/Y的pthread_create创建失败:操作不被允许

将Docker引擎升级至最新可用版本(>= 20.10.12)。

PermissionError: [Errno 13] 权限被拒绝: /label-studio/data/media

警告

从Label Studio 1.7.0版本开始,该应用程序使用ID为1001的非root docker用户运行。

您可能已经知道,Docker容器默认情况下通常以root权限运行。这种不受限制的容器管理允许执行诸如安装系统软件包、修改配置文件以及绑定特权端口等操作,这些都对开发工作非常有利。然而,当容器部署在生产环境中时,这可能会带来重大风险。

这是因为任何获得您以root权限运行的容器访问权限的人都可以启动不良进程,例如注入恶意代码。在容器中以root身份运行进程还允许在启动容器时更改用户ID(UID)或组ID(GID),从而使您的应用程序更加脆弱。

出于以下原因,建议使用非root容器:

  • 安全性:非root容器本质上提供更好的安全性。如果容器引擎出现安全问题,以非特权用户身份运行容器可以防止恶意代码在容器主机上获取提升的权限。有关Docker安全特性的更多信息,请参阅本指南。

  • 平台限制:某些Kubernetes发行版(如OpenShift)会使用随机UUID执行容器。此方法与必须以root用户UUID运行的root容器不兼容。在这种情况下,只能运行非root容器镜像,因此必须使用这类镜像。

我们的Dockerfile中包含USER 1001这一行,它为镜像分配了一个非root用户UID,使容器能够以非特权用户身份运行。此实现将上述提到的安全增强和其他限制应用于容器。

非root用户的文件权限

默认情况下,Label Studio容器镜像以非root用户运行。因此,任何需要写入权限的目录都必须分配给root组(GID 0)。这确保了任意用户(默认为UID 1001)都能写入该目录,因为该用户始终属于root组。要实现这一点,只需将本地目录的所有权设置为root组(GID 0),无论UID如何设置都适用:

mkdir mydata
sudo chown :0 mydata
[How to run a more secure non-root user container by Dan Wash](https://www.projectatomic.io/blog/2016/01/how-to-run-a-more-secure-non-root-user-container/)