Files
sanguo_vnpy/scripts/deployment/fix_vnpy_imports_script.py
T
2026-04-11 21:18:55 +08:00

53 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""
vn.py 4.x 兼容性修复脚本
"""
import os
import re
def fix_vnpy_imports(file_path):
"""修复文件中的vn.py导入"""
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 替换规则
replacements = [
(r'from vnpy\.app\.', 'from vnpy_'),
(r'import vnpy\.app\.', 'import vnpy_'),
(r'vnpy\.app\.cta_strategy', 'vnpy_ctastrategy'),
(r'vnpy\.app\.cta_backtester', 'vnpy_ctabacktester'),
(r'vnpy\.app\.data_manager', 'vnpy_datamanager'),
(r'vnpy\.app\.rpc_service', 'vnpy_rpcservice'),
(r'vnpy\.app\.algo_trading', 'vnpy_algotrading'),
]
fixed_content = content
for pattern, replacement in replacements:
fixed_content = re.sub(pattern, replacement, fixed_content)
if fixed_content != content:
# 备份原文件
backup_path = file_path + '.backup'
os.rename(file_path, backup_path)
# 写入修复后的文件
with open(file_path, 'w', encoding='utf-8') as f:
f.write(fixed_content)
print(f"✅ 已修复: {file_path}")
print(f" 备份: {backup_path}")
return True
else:
print(f"✅ 无需修复: {file_path}")
return False
# 使用示例
if __name__ == "__main__":
# 修复当前目录下的Python文件
for root, dirs, files in os.walk('.'):
for file in files:
if file.endswith('.py'):
file_path = os.path.join(root, file)
fix_vnpy_imports(file_path)