win11安装paddlelabel并创建目标检测项目

发布于:2025-07-08 ⋅ 阅读:(14) ⋅ 点赞:(0)

创建虚拟环境

conda create -n paddlelabel python=3.11.11
conda activate paddlelabel

通过以下命令安装

pip install --upgrade paddlelabel

输入命令pdlabel运行paddlelabel,发现报错:

ModuleNotFoundError: Please install connexion using the 'flask' extra

输入命令:

pip install connexion[flask] connexion[uvicorn]

再启动报错:

TypeError: Field.__init__() got an unexpected keyword argument 'exclude'

看报错信息定位到

File "...\site-packages\paddlelabel\api\schema\task.py", line 18, in TaskSchema

猜测是多包之间的版本兼容问题,把这行改了

# annotations = fields.List(Nested("AnnotationSchema"), exclude=("task",))
annotations = fields.List(fields.Nested("AnnotationSchema", exclude=("task",)))

然后运行会出现这个问题:

TypeError: run() got an unexpected keyword argument 'debug'

意思是run()函数不能指定debug参数,这里怀疑是版本兼容问题,但由于没找到具体的版本,反复测试版本很费事,就直接把debug的参数去掉了,如下:

# ...\site-packages\paddlelabel\__main__.py
connexion_app.run(host=configs.host, port=configs.port, debug=configs.debug)
# 复制并注释掉原来的行,删掉debug参数
connexion_app.run(host=configs.host, port=configs.port)

再启动就能正常打开界面:
在这里插入图片描述
之后选中目标检测,导入数据集,创建失败,运行以下命令:

pip install uvicorn==0.14.0 --no-deps
pip install connexion==2.14.1 --no-deps
pip install anyio==3.0 --no-deps
pip install Werkzeug==2.2.2 --no-deps
pip install starlette==0.21.0 --no-deps
pip install Flask==2.2.2 --no-deps
pip install Flask-Cors==3.0.10 --no-deps
pip install a2wsgi==1.8.0 --no-deps
pip install alembic==1.12.1 --no-deps
pip install a2wsgi uvicorn==0.18.1

之后还有报错,将这两个文件原封不动修改掉:

# 我的路径是:D:\anaconda3\envs\paddlelabel\Lib\site-packages\paddlelabel\api\schema\annotation.py
# -*- coding: utf-8 -*-
from marshmallow import fields


from paddlelabel.api.model import Annotation
from .base import BaseSchema


class AnnotationSchema(BaseSchema):
    class Meta(BaseSchema.Meta):
        model = Annotation

    # not required when calling api
    # task = fields.Int(allow_none=True)
    task = fields.Nested("TaskSchema", only=("id",), dump_only=True)
    project_id = fields.Integer()
    task_id = fields.Integer()
    # task = fields.Nested("TaskSchema", exclude=("annotations", "datas"))
    label = fields.Nested("LabelSchema")

# 我的路径是:D:\anaconda3\envs\paddlelabel\Lib\site-packages\paddlelabel\api\schema\task.py
# -*- coding: utf-8 -*-
import json
import time

from marshmallow import post_load, pre_load, pre_dump, post_dump, fields
from marshmallow.fields import Nested

from paddlelabel.api.model import Task
from paddlelabel.api.schema.util import str2sault
from .base import BaseSchema


class TaskSchema(BaseSchema):
    class Meta(BaseSchema.Meta):
        model = Task

    # project = Nested("ProjectSchema")
    # annotations = fields.List(Nested("AnnotationSchema"), exclude=("task",))
    id = fields.Int()
    annotations = fields.List(Nested("AnnotationSchema", exclude=("task",)))
    # annotations = fields.List(fields.Nested("AnnotationSchema", exclude=("task",)))
    data_paths = fields.List(fields.String())
    # datas = fields.List(Nested("DataSchema"), exclude=("task",))

    # # TODO: confirm data['result'] dont cause trouble
    
    def output(self, task, **kwargs):
        paths = []
        for data in task.datas:
            paths.append(f"/datas/{data.data_id}/image?sault={str2sault(data.path+str(data.created))}")
        task.data_paths = paths
        return task

之后再次创建之前,要先回到主页,把创建失败的项目给删掉才能重新创建该项目。
再次创建成功:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到