创建虚拟环境
            
            
              dart
              
              
            
          
          conda create -n paddlelabel python=3.11.11
conda activate paddlelabel
        通过以下命令安装
            
            
              dart
              
              
            
          
          pip install --upgrade paddlelabel
        输入命令pdlabel运行paddlelabel,发现报错:
            
            
              dart
              
              
            
          
          ModuleNotFoundError: Please install connexion using the 'flask' extra
        输入命令:
            
            
              dart
              
              
            
          
          pip install connexion[flask] connexion[uvicorn]
        再启动报错:
            
            
              dart
              
              
            
          
          TypeError: Field.__init__() got an unexpected keyword argument 'exclude'
        看报错信息定位到
            
            
              dart
              
              
            
          
          File "...\site-packages\paddlelabel\api\schema\task.py", line 18, in TaskSchema
        猜测是多包之间的版本兼容问题,把这行改了
            
            
              dart
              
              
            
          
          # annotations = fields.List(Nested("AnnotationSchema"), exclude=("task",))
annotations = fields.List(fields.Nested("AnnotationSchema", exclude=("task",)))
        然后运行会出现这个问题:
            
            
              dart
              
              
            
          
          TypeError: run() got an unexpected keyword argument 'debug'
        意思是run()函数不能指定debug参数,这里怀疑是版本兼容问题,但由于没找到具体的版本,反复测试版本很费事,就直接把debug的参数去掉了,如下:
            
            
              dart
              
              
            
          
          # ...\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)
        再启动就能正常打开界面:

之后选中目标检测,导入数据集,创建失败,运行以下命令:
            
            
              dart
              
              
            
          
          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
        之后还有报错,将这两个文件原封不动修改掉:
            
            
              dart
              
              
            
          
          # 我的路径是: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")
        
            
            
              dart
              
              
            
          
          # 我的路径是: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
    @pre_dump
    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
        之后再次创建之前,要先回到主页,把创建失败的项目给删掉才能重新创建该项目。
再次创建成功:
