-
Notifications
You must be signed in to change notification settings - Fork 103
Description
Bug 报告 (Bug Report)
问题描述 (Description):
在使用 module_manager install 命令安装一个包含基本语法错误(例如 IndentationError 缩进错误)的 Python 模块时,该命令报告安装成功,但模块代码实际上是有问题的。只有在 BMF 图运行时尝试加载和使用该模块时,语法错误才会被发现并导致运行时错误。
我认为 module_manager install 在安装 Python 模块时应该进行基本的语法检查,并在发现模块代码无效时报告安装失败。
重现步骤 (Steps to Reproduce):
-
环境:
- 操作系统:Ubuntu 20.04
- BMF 安装方式:通过
pip install BabitMF安装 - BMF 版本:0.0.9
- Python 版本:3.8.10
-
创建一个包含语法错误的 Python 模块:
创建以下文件结构和内容(注意my_module.py中故意制造的IndentationError):~/workplace/ └── my_python_module/ └── my_module.py~/workplace/my_python_module/my_module.py的内容:
-
尝试使用
module_manager install安装该模块:
在终端中切换到~/workplace目录。使用通过 pip 安装找到的module_manager可执行文件完整路径,并设置LD_LIBRARY_PATH。# 假设 BMF bin 和 lib 路径来自之前的查找结果 # 如果不同,请替换为你的实际路径 BMF_BIN_PATH="/home/wangmiao/.local/lib/python3.8/site-packages/bmf/bin/module_manager" BMF_LIB_DIR="/home/wangmiao/.local/lib/python3.8/site-packages/bmf/lib" cd ~/workplace sudo LD_LIBRARY_PATH="${BMF_LIB_DIR}:${LD_LIBRARY_PATH}" ${BMF_BIN_PATH} install my_python_module python my_module:my_module $(pwd)/my_python_module v0.0.1
-
观察安装命令的输出:
命令报告安装成功,即使模块代码存在语法错误。
-
尝试在 BMF 图中使用已安装的模块:
创建一个简单的 BMF Python 脚本(例如test.py)并在图中包含my_python_module。import bmf import os # 如果脚本运行环境需要,设置 LD_LIBRARY_PATH # 替换为你的实际 BMF lib 路径 BMF_LIB_DIR = "/home/wangmiao/.local/lib/python3.8/site-packages/bmf/lib" os.environ['LD_LIBRARY_PATH'] = f"{BMF_LIB_DIR}:{os.environ.get('LD_LIBRARY_PATH', '')}" input_video_path = "./test.mp4" # 确保这个文件存在用于测试 output_path = "./custom_module.mp4" try: ( bmf.graph() .decode({'input_path': input_video_path})['video'] .module('my_python_module') # 使用已安装的模块名称 .encode(None, {"output_path": output_path}) .run() ) print("\nBMF graph execution finished successfully.") except Exception as e: print(f"\nAn error occurred during BMF graph execution: {e}")
-
观察运行时错误:
运行 BMF 脚本时,与 Python 模块语法相关的错误在图初始化/执行阶段被抛出,导致程序崩溃。
预期行为 (Expected behavior):
module_manager install 命令在安装过程中应该检测到模块文件的 IndentationError(或其他基本的 Python 语法错误),并报告安装失败,提示模块代码无效。
实际行为 (Actual behavior):
module_manager install 命令成功完成并报告模块已安装。语法错误仅在 BMF 运行时尝试加载和导入 Python 模块文件时被发现,导致一个包含原始 Python IndentationError 的 RuntimeError。


