From 1442f92732d7c5311a627a7ba3aaa0bb8ffc539f Mon Sep 17 00:00:00 2001
From: Bin <bin.zheng@slooong.com>
Date: 星期三, 17 十二月 2025 10:49:15 +0800
Subject: [PATCH] 测试脚本
---
test_coco_export.py | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 111 insertions(+), 0 deletions(-)
diff --git a/test_coco_export.py b/test_coco_export.py
new file mode 100644
index 0000000..14693ac
--- /dev/null
+++ b/test_coco_export.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+"""
+COCO 导出测试脚本
+用于测试 COCO 导出功能并打印详细信息
+"""
+import os
+import sys
+
+# 添加项目路径
+sys.path.insert(0, '/data/label-studio')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'label_studio.core.settings.label_studio')
+
+import django
+django.setup()
+
+from django.conf import settings
+from projects.models import Project
+from data_export.models import DataExport
+from data_export.serializers import ExportDataSerializer
+
+def test_coco_export():
+ """测试 COCO 导出功能"""
+ print("=" * 80)
+ print("COCO 导出测试脚本")
+ print("=" * 80)
+
+ # 1. 检查配置
+ print("\n[1] 检查配置:")
+ print(f"MEDIA_ROOT: {settings.MEDIA_ROOT}")
+ print(f"UPLOAD_DIR: {settings.UPLOAD_DIR}")
+ print(f"完整上传路径: {os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR)}")
+ print(f"路径是否存在: {os.path.exists(os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR))}")
+ print(f"CONVERTER_DOWNLOAD_RESOURCES 默认值: {settings.CONVERTER_DOWNLOAD_RESOURCES}")
+
+ upload_dir = os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR)
+ if os.path.exists(upload_dir):
+ print(f"上传目录内容: {os.listdir(upload_dir)}")
+ # 检查项目1的文件夹
+ project1_dir = os.path.join(upload_dir, '1')
+ if os.path.exists(project1_dir):
+ files = os.listdir(project1_dir)
+ print(f"项目1的文件数量: {len(files)}")
+ if files:
+ print(f"示例文件: {files[0]}")
+
+ # 2. 检查项目
+ print("\n[2] 检查项目:")
+ try:
+ project = Project.objects.get(id=1)
+ print(f"项目 ID: {project.id}")
+ print(f"项目标题: {project.title}")
+ print(f"任务数量: {project.tasks.count()}")
+ print(f"标注数量: {sum(t.annotations.count() for t in project.tasks.all())}")
+ except Project.DoesNotExist:
+ print("错误:项目1不存在")
+ return
+
+ # 3. 获取任务数据
+ print("\n[3] 获取任务数据:")
+ tasks = project.tasks.all()
+ if tasks.exists():
+ first_task = tasks.first()
+ print(f"第一个任务 ID: {first_task.id}")
+ print(f"任务数据: {first_task.data}")
+
+ # 检查图片路径
+ if 'image' in first_task.data:
+ image_path = first_task.data['image']
+ print(f"图片路径(在数据中): {image_path}")
+
+ # 尝试解析路径
+ if image_path.startswith('/data/'):
+ # 移除 /data/ 前缀
+ relative_path = image_path.replace('/data/', '')
+ full_path = os.path.join(settings.MEDIA_ROOT, relative_path)
+ print(f"完整文件路径: {full_path}")
+ print(f"文件是否存在: {os.path.exists(full_path)}")
+ if os.path.exists(full_path):
+ print(f"文件大小: {os.path.getsize(full_path)} 字节")
+ else:
+ print("警告:项目中没有任务")
+ return
+
+ # 4. 测试导出
+ print("\n[4] 测试导出:")
+ print("正在序列化任务数据...")
+ task_data = ExportDataSerializer(tasks, many=True).data
+ print(f"序列化的任务数量: {len(task_data)}")
+
+ if task_data:
+ print("\n第一个任务的数据结构:")
+ first_task_keys = list(task_data[0].keys())
+ print(f"字段: {', '.join(first_task_keys)}")
+
+ if 'data' in task_data[0]:
+ print(f"data 字段内容: {task_data[0]['data']}")
+
+ # 5. 检查 label-studio-sdk 版本
+ print("\n[5] 检查依赖:")
+ try:
+ import label_studio_sdk
+ print(f"label-studio-sdk 版本: {label_studio_sdk.__version__}")
+ except:
+ print("警告:无法导入 label_studio_sdk")
+
+ print("\n" + "=" * 80)
+ print("测试完成")
+ print("=" * 80)
+
+if __name__ == '__main__':
+ test_coco_export()
--
Gitblit v1.9.3