fix: correct targeted search logic for material/stock list to prevent unrelated results
This commit is contained in:
50
inventory-backend/find_error.py
Normal file
50
inventory-backend/find_error.py
Normal file
@ -0,0 +1,50 @@
|
||||
import os
|
||||
|
||||
|
||||
def find_bad_imports(root_dir):
|
||||
# 我们要查找的错误引用字符串
|
||||
targets = [
|
||||
"app.models.material",
|
||||
"from app.models.material"
|
||||
]
|
||||
|
||||
print(f"🚀 开始扫描目录: {os.path.abspath(root_dir)}")
|
||||
print(f"🔍 正在寻找残留代码: {targets} ...\n")
|
||||
|
||||
found_count = 0
|
||||
|
||||
# 排除的目录(避免扫描虚拟环境或缓存)
|
||||
exclude_dirs = {'.git', '__pycache__', 'venv', '.idea', '.vscode'}
|
||||
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
# 修改 dirs 列表以跳过排除的目录
|
||||
dirs[:] = [d for d in dirs if d not in exclude_dirs]
|
||||
|
||||
for file in files:
|
||||
if file.endswith(".py"):
|
||||
file_path = os.path.join(root, file)
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
for i, line in enumerate(lines, 1):
|
||||
for target in targets:
|
||||
if target in line:
|
||||
print(f"❌ 发现错误文件: {file_path}")
|
||||
print(f" ➡️ 第 {i} 行: {line.strip()}")
|
||||
found_count += 1
|
||||
except Exception as e:
|
||||
# 忽略无法读取的文件(如二进制文件)
|
||||
pass
|
||||
|
||||
print("-" * 50)
|
||||
if found_count == 0:
|
||||
print("✅ 恭喜!未发现任何 'app.models.material' 的残留引用。")
|
||||
print("💡 如果依然报错,请尝试完全重启 Docker 或清理 __pycache__。")
|
||||
else:
|
||||
print(f"⚠️ 共发现 {found_count} 处错误引用,请照上方路径逐一修改。")
|
||||
print("👉 修改方法: 将 'app.models.material' 改为 'app.models.base'")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 扫描当前目录
|
||||
find_bad_imports(".")
|
||||
Reference in New Issue
Block a user