PyCharm 下 Label Studio 的部署安装启动简略教程指南

简介

源码地址

Label Studio 源码托管于 GitHub,地址为 https://github.com/heartexlabs/label-studio

什么是 Label Studio

Label Studio 是一个开源的数据标注工具,并且使用了 Apache 2.0 LICENSE,没有商业化和闭源的限制(遵守协议的情况下)。

所用语言

后端是用纯 Python 编写的,由 Django 提供支持。

前端部分是一个与后端无关的 React + MST 应用程序,包括在一个预编译脚本中。

安装、启动与使用

Label Studio 在 GitHub 官方项目中提供了多种使用方式,包括 docker、本地等,想要直接使用而不修改的话,十分方便。

但是如果想针对 Label Studio 进行某些定制化开发的话,可能就需要了解一些它在本地启动的方式了。此处使用 Windows 平台下的 PyCharm 作为例子,简略讲述 Label Studio 怎么在 PyCharm 下启动起来并且能自定义一些参数。

免责声明

本人在此之前没有使用 Python 开发过 Django,也未曾有过任何开发 Python web 的经历。文中所讲述的方案、内容可能不一定完全正确。

该教程仅用于记录安装 Label Studio 方面的步骤,对过程中出现的问题不负任何责任。

相关改进请在评论区提出,会虚心接受改进。文章地址:https://blog.csdn.net/qq_36670734/article/details/122510886

Clone 代码到 PyCharm

到本地文件夹中执行命令:

git clone https://github.com/heartexlabs/label-studio.git

或者利用 PyCharm 中的 git clone 来下载代码
PyCharm工具栏Clone
PyCharm选择路径Clone

设置 Python 解释器

项目支持的 Python 版本

Label Studio 支持的 Python 版本是 大于等于 3.6 小于等于 3.9,见 GitHub install-locally-with-pip。与时俱进的是,就在此篇文章编写的时候(2022-01-15),Label Studio 将原本小于 3.9 的限制改为了小于等于,修改时间是 2022-01-15 04:27。

因此此处需要插一句了,在项目的 Dockerfile 文件中,有如下的依赖,如图:
DockerFIle截图
可以看到第 15 行还是 python3.8。预计将来某个时候将会改成 python3.9。

在 PyCharm 中设置 Python 虚拟环境

设置虚拟环境的原因是:由于个人喜好,不愿意在 Python 的全局环境中安装各种 packages,避免可能存在的依赖问题,所以此处新建了虚拟环境。

打开 PyCharm 中的 Python 解释器设置(File - Setting - Project: label-studio - Python Interpreter),新建点击右边齿轮符号选择 add 打开新建环境的界面。选择本地安装的 Python 解释器的位置即可,如图:
Python解释器环境新建
做完此步骤之后,就会在工程的 venv 文件夹路径下新建了这个工程的环境。当然,可以在上图的 Location 里面指定环境的其他位置。

安装依赖的 packages

命令行安装

安装 GitHub 给的教程,地址:GitHub install-for-local-development,文字如下:

# Install all package dependencies
pip install -e .

只要去工程路径下执行 pip install -e . 命令即可。

PyCharm 下安装

作为使用 PyCharm 的我,非轻易不会打开控制台命令行进行操作。一般来说,很多项目都会有 requirements.txt 的文件。Label Studio 的这个文件在 deploy 文件夹下面。

设置 requirements file

打开设置(Setting - Tools - Python Intergated Tools),在 Packaging - Package requirements file 中选择 requirements.txt 的路径即可。

安装 packages

打开 requirements.txt 文件,PyCharm 可能会在文件上方提示需要 Install requirements,安装提示安装即可。或者没有出来提示的,打开 .py 文件,也会有相关提示出现,如图:
Install requirements 提示
若再没有出现,使用命令行安装即可。

启动项目

按照官方给的教程,运行下面两行命令即可启动项目,如下:

# Run database migrations
python label_studio/manage.py migrate
# Start the server in development mode at http://localhost:8080
python label_studio/manage.py runserver

第一行是第一次运行的时候初始化项目所需的 SQLite 数据库;第二行是运行项目。

启动问题

我这边先执行了官网的教程的命令,首先数据库位置放在了我不想要的地方,其次数据库也启动失败了。

首先讲述数据库的位置。使用默认参数启动的项目,数据库、其他文件的路径都是在用户目录下的,比如 Windows 下一般就是 C:\Users\{user-name}\AppData\Local\label-studio\label-studio。这个对于我来说不是很喜欢。

如果本地环境是 Python 3.7 的话,在启动的时候,会报错 SQLite does not support JSONFields. 错误,如下:

ERRORS:
data_export.Export: (fields.E180) SQLite does not support JSONFields.
data_manager.Filter: (fields.E180) SQLite does not support JSONFields.
data_manager.View: (fields.E180) SQLite does not support JSONFields.
data_manager.View: (fields.E180) SQLite does not support JSONFields.
data_manager.View: (fields.E180) SQLite does not support JSONFields.
projects.Project: (fields.E180) SQLite does not support JSONFields.
projects.Project: (fields.E180) SQLite does not support JSONFields.
projects.ProjectSummary: (fields.E180) SQLite does not support JSONFields.
projects.ProjectSummary: (fields.E180) SQLite does not support JSONFields.
projects.ProjectSummary: (fields.E180) SQLite does not support JSONFields.
projects.ProjectSummary: (fields.E180) SQLite does not support JSONFields.
tasks.Annotation: (fields.E180) SQLite does not support JSONFields.
tasks.Annotation: (fields.E180) SQLite does not support JSONFields.
tasks.AnnotationDraft: (fields.E180) SQLite does not support JSONFields.
tasks.Prediction: (fields.E180) SQLite does not support JSONFields.
tasks.Prediction: (fields.E180) SQLite does not support JSONFields.
tasks.Task: (fields.E180) SQLite does not support JSONFields.
tasks.Task: (fields.E180) SQLite does not support JSONFields.
webhooks.Webhook: (fields.E180) SQLite does not support JSONFields.

或者可能会提示

You are on Windows Python 3.7.
This Python version uses SQLite 3.31.1 which does not support JSON Field.
Read more about this issue: https://code.djangoproject.com/wiki/JSON1Extension [Windows section]

说明 SQLite 版本不匹配。

解决问题

首先解决 SQLite 问题。

去官网 SQLite Download Page 下载 SQLite 包。Windows 系统下载 Precompiled Binaries for Windows 解压到 Python 目录下,替换 sqlite3.dll 文件即可。

其次解决默认数据库位置(默认多媒体文件位置)。这个不应该算是问题。官方的启动方式是 python label_studio/manage.py migratepython label_studio/manage.py runserver,这也是 Django 的正常启动方式。但是这种方式不能自定义各种参数,比如日志等级、多媒体文件路径、是否开启 debug 等。

经过源码的阅读,发现 server.py 文件有着和 manage.py 异曲同工的作用。由于该文件代码行数较多,就简单分析一下。

首先 main() 函数里面解析了命令行参数,然后把参数加入到环境变量中。接下来执行数据库的初始化操作,它内部调用了 call_command('migrate', '--no-color', verbosity=0) 语句,也就是执行了 python label_studio/manage.py migrate 操作。最后根据环境变量来是否启动项目,默认启动。

所以执行 server.py 即可启动项目。

我这里加入了如下的启动参数

–data-dir …/mydata/ --log-level WARNING -b -d

如图:
启动参数
参数解释:
--data-dir ../mydata/:设置多媒体路径为 ../mydata/
--log-level WARNING:日志等级设置为 warn。
-b:不自动打开浏览器。
-d:开启 debug 模式。
其他参数请阅读 argparser.py 文件和 server.py 源码。

踩坑

静态文件访问问题

由于没有使用过 Django,所以当如上设置之后,发现静态文件无法加载。经过比对 server.pymanage.py 发现, manage.py 文件比 server.py 多了一行如下代码:

os.environ.setdefault('DEBUG', 'True')

也就是说,默认启动即开启了 debug 模式。

经过恶补了 Django 皮毛知识之后才知道,开启 debug 模式后,静态文件会走路由默认从项目路径找,否则会走普通的方式直接通过 ip:port/xxx 寻找静态文件。

关闭 debug 模式,可以使静态文件更好地结合 CDN,减少服务器的压力。

而上述启动命令行参数中已经指定了 -d 表示启动 debug 模式了,所以问题就出在,它没有把 debug 加入到环境变量中,也就是少了这行代码。

所以可以修改 server.py 文件,在 main 中加入如下代码:

os.environ.setdefault('DEBUG', 'True')

变成下述代码:

if __name__ == "__main__":
    os.environ.setdefault('DEBUG', 'True')
    sys.exit(main())

如图:
启动main加入debug
但是这种方式太暴力,写死了相关配置。

我这里采用了可配置的修改,加入了如下代码:

if input_args.debug:
    os.environ.setdefault('DEBUG', 'True')

修改的位置在 main() 方法内部,如图:
debug变量
这样子就能做到在命令行参数中指定 -d 开启 debug 模式了。

使用 Label Studio

终于,在启动了项目之后,可以使用项目了。

默认启动的端口是 8080,所以在本地打开 http://localhost:8080 即可访问 Label Studio。

启动界面如下:
label studio第一次启动界面
首次使用需要注册,而后即可正常使用
项目页面
具体 Label Studio 的用法,请参照其他文档。

  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值