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 的用法,请参照其他文档。

<think>好的,我现在需要解决用户关于pip权限的问题。用户想通过指定命令F:\anaconda\envs\label_studio\python.exe -m pip install pipdeptree来修改pip,但可能遇到了权限问题。首先,我得回忆一下常见的pip权限问题及其解决方法。 首先,用户可能是在Windows系统下使用Anaconda环境,路径中有F:\anaconda,这说明用户可能创建了一个名为label_studio的虚拟环境。当用户尝试安装包时,如果没有足够的权限,可能会遇到写入错误,比如无法写入site-packages目录。 常见的解决方案包括: 1. 以管理员权限运行命令提示符。这可能允许写入系统保护的目录。但用户可能已经尝试过,或者系统策略限制了管理员权限。 2. 使用虚拟环境。用户已经在使用conda环境,但可能环境本身的权限设置有问题。需要检查环境目录的权限,确保用户有写入权限。 3. 使用--user选项安装,将包安装到用户目录,而不是系统目录。但用户可能希望将包安装在虚拟环境中,所以这个选项可能不太适用。 4. 直接指定python.exe的路径,如用户提到的F:\anaconda\envs\label_studio\python.exe,这可能确保使用正确的环境下的pip。但用户可能仍然遇到权限问题,因为即使环境存在,安装包可能需要写入权限到环境的site-packages。 接下来,我需要检查用户提供的命令是否正确。用户给出的命令是: F:\anaconda\envs\label_studio\python.exe -m pip install pipdeptree 这条命令理论上应该使用指定环境中的Python和pip来安装包。如果权限问题依然存在,可能需要确认该环境的目录是否有正确的权限。用户可能需要以管理员身份运行命令提示符,或者在Anaconda Prompt中激活环境后再执行命令。 另外,用户可能之前尝试更新pip时遇到问题,如引用[3]提到的错误,这时候可能需要先确保pip已经正确安装。例如,使用python -m ensurepip来修复pip,然后升级pip。但用户现在的问题是关于安装pipdeptree时的权限问题,而不是pip本身的问题。 可能的解决方案步骤: 1. 激活conda环境:在Anaconda Prompt中运行activate label_studio,确保环境激活后再执行安装命令。 2. 以管理员身份运行Anaconda Prompt,然后执行安装命令。这样可以获得必要的写入权限。 3. 检查环境目录的权限:确保用户对F:\anaconda\envs\label_studio目录有完全控制权限。如果权限不足,需要修改目录权限。 4. 使用conda安装:如果pipdeptree在conda仓库中存在,可以尝试conda install -c conda-forge pipdeptree,这样可能避免pip的权限问题。 5. 使用--target选项指定安装路径,但可能会影响包的管理,不建议。 此外,用户提到的引用[3]中的解决方法提到先激活虚拟环境,然后使用python -m ensurepip和升级pip。可能用户需要确保环境中的pip正常工作,再安装其他包。 总结可能的步骤: - 以管理员权限打开命令提示符或Anaconda Prompt。 - 激活目标环境:activate label_studio。 - 确保pip正常:python -m ensurepip,然后python -m pip install --upgrade pip。 - 最后运行指定的安装命令:F:\anaconda\envs\label_studio\python.exe -m pip install pipdeptree。 或者,直接在激活的环境中运行pip install pipdeptree,因为激活环境后应该使用环境中的pip。 可能用户没有正确激活环境,导致使用了系统pip,而系统pip可能需要管理员权限。因此,正确激活环境后,应该使用环境内的pip,而环境的目录如果安装在用户目录下,可能不需要管理员权限。 如果用户的环境安装在需要管理员权限的位置,比如系统级的Anaconda安装,可能需要以管理员权限操作。但如果是用户自己安装的Anaconda,通常在用户目录下,可能不需要管理员权限。 所以,关键点可能是确保环境被正确激活,或者以管理员权限运行命令,或者修复环境目录的权限。</think>### 解决pip权限问题的分步指南 #### 1. **以管理员身份运行命令行工具** - **Windows**:右键点击`命令提示符`或`Anaconda Prompt`,选择**以管理员身份运行**。 - **Mac/Linux**:使用`sudo`前缀(但需注意conda环境路径权限)。 #### 2. **激活目标conda环境** 在命令行中执行以下命令: ```bash activate label_studio ``` 若激活失败,检查环境路径`F:\anaconda\envs\label_studio`是否存在。 #### 3. **直接运行安装命令(需管理员权限)** 在已激活的环境中执行: ```bash F:\anaconda\envs\label_studio\python.exe -m pip install pipdeptree ``` - 若提示**权限不足**,需检查环境目录的写入权限(见步骤4)。 - 若提示**pip版本过低**,先升级pip: ```bash F:\anaconda\envs\label_studio\python.exe -m pip install --upgrade pip ``` #### 4. **检查环境目录权限(仅限Windows)** - 右键点击目录`F:\anaconda\envs\label_studio` → **属性** → **安全** → 编辑用户权限为**完全控制**。 - 若目录权限被系统锁定,可能需要通过管理员账户修改。 #### 5. **通过conda安装(替代方案)** 若pip仍存在问题,可尝试conda安装(需添加conda-forge渠道): ```bash conda install -c conda-forge pipdeptree ``` #### 6. **使用虚拟环境隔离(预防措施)** 若问题持续,新建一个干净的环境: ```bash conda create -n new_env python=3.8 conda activate new_env pip install pipdeptree ``` --- ### 关键原理说明 - **权限问题根源**:系统保护的目录(如`Program Files`下的Anaconda)默认禁止用户写入,需管理员权限或调整目录权限[^3]。 - **环境隔离作用**:conda环境将包安装在用户有权限的路径下(如`envs/label_studio`),避免系统目录冲突[^3]。 ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值