Bin
2025-12-17 8916e4c7ee8b37479c6c5ad74e81697cf300e234
测试脚本_5
已添加1个文件
114 ■■■■■ 文件已修改
test_converter_direct.py 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test_converter_direct.py
对比新文件
@@ -0,0 +1,114 @@
#!/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}")