#!/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}")
|