| 对比新文件 |
| | |
| | | #!/usr/bin/env python |
| | | """ |
| | | 直接测试 Converter 的行为 |
| | | """ |
| | | import os |
| | | import sys |
| | | import json |
| | | |
| | | # 设置环境变量 |
| | | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'label_studio.core.settings.label_studio') |
| | | os.environ['LABEL_STUDIO_BASE_DATA_DIR'] = '/data/label-studio-data' |
| | | |
| | | # 添加项目路径 |
| | | sys.path.insert(0, '/data/label-studio') |
| | | |
| | | import django |
| | | django.setup() |
| | | |
| | | from django.conf import settings |
| | | from label_studio_sdk.converter import Converter |
| | | |
| | | print("=" * 80) |
| | | print("测试 Converter 行为") |
| | | print("=" * 80) |
| | | |
| | | # 配置 |
| | | upload_dir = os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR) |
| | | print(f"upload_dir: {upload_dir}") |
| | | print(f"upload_dir exists: {os.path.exists(upload_dir)}") |
| | | |
| | | if os.path.exists(upload_dir): |
| | | print(f"upload_dir contents: {os.listdir(upload_dir)}") |
| | | |
| | | # 创建测试数据 |
| | | test_data = [ |
| | | { |
| | | "id": 1, |
| | | "data": { |
| | | "$undefined$": "/data/upload/1/8812d845-屏幕截图_2025-03-20_190533.png" |
| | | }, |
| | | "annotations": [] |
| | | } |
| | | ] |
| | | |
| | | # 保存为临时JSON |
| | | test_json = "/tmp/test_coco_input.json" |
| | | with open(test_json, 'w', encoding='utf-8') as f: |
| | | json.dump(test_data, f, ensure_ascii=False, indent=2) |
| | | |
| | | print(f"\nTest JSON created: {test_json}") |
| | | print(f"Test data: {test_data[0]['data']}") |
| | | |
| | | # 测试文件是否存在 |
| | | test_file_path = "/data/upload/1/8812d845-屏幕截图_2025-03-20_190533.png" |
| | | print(f"\nTest file path: {test_file_path}") |
| | | print(f"Test file exists: {os.path.exists(test_file_path)}") |
| | | |
| | | # 尝试不同的 upload_dir 配置 |
| | | test_configs = [ |
| | | ("MEDIA_ROOT/UPLOAD_DIR", os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR)), |
| | | ("/data", "/data"), |
| | | ("/data/label-studio-data/media", "/data/label-studio-data/media"), |
| | | ] |
| | | |
| | | for config_name, test_upload_dir in test_configs: |
| | | print(f"\n{'=' * 80}") |
| | | print(f"Testing with upload_dir = {config_name} ({test_upload_dir})") |
| | | print(f"{'=' * 80}") |
| | | |
| | | try: |
| | | # 创建输出目录 |
| | | output_dir = f"/tmp/test_coco_output_{config_name.replace('/', '_')}" |
| | | os.makedirs(output_dir, exist_ok=True) |
| | | |
| | | # 初始化 Converter |
| | | converter = Converter( |
| | | config="<View><Image name='image' value='$undefined$'/></View>", |
| | | project_dir=None, |
| | | upload_dir=test_upload_dir, |
| | | download_resources=True, |
| | | ) |
| | | |
| | | print(f"Converter initialized") |
| | | print(f"Converter.upload_dir: {converter.upload_dir if hasattr(converter, 'upload_dir') else 'N/A'}") |
| | | |
| | | # 执行转换 |
| | | converter.convert(test_json, output_dir, "COCO", is_dir=False) |
| | | |
| | | print(f"Conversion completed") |
| | | |
| | | # 检查输出 |
| | | output_contents = os.listdir(output_dir) |
| | | print(f"Output directory contents: {output_contents}") |
| | | |
| | | # 检查 images 目录 |
| | | images_dir = os.path.join(output_dir, "images") |
| | | if os.path.exists(images_dir): |
| | | image_files = os.listdir(images_dir) |
| | | print(f"✓ images/ directory exists with {len(image_files)} files") |
| | | if image_files: |
| | | print(f" Files: {image_files}") |
| | | else: |
| | | print(f" ✗ ERROR: images/ directory is EMPTY!") |
| | | else: |
| | | print(f"✗ ERROR: images/ directory does NOT exist") |
| | | |
| | | except Exception as e: |
| | | print(f"✗ ERROR: {e}") |
| | | import traceback |
| | | traceback.print_exc() |
| | | |
| | | print(f"\n{'=' * 80}") |
| | | print("测试完成") |
| | | print(f"{'=' * 80}") |