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。
Bug 报告 (Bug Report)
问题描述 (Description):
在使用
module_manager install命令安装一个包含基本语法错误(例如IndentationError缩进错误)的 Python 模块时,该命令报告安装成功,但模块代码实际上是有问题的。只有在 BMF 图运行时尝试加载和使用该模块时,语法错误才会被发现并导致运行时错误。我认为
module_manager install在安装 Python 模块时应该进行基本的语法检查,并在发现模块代码无效时报告安装失败。重现步骤 (Steps to Reproduce):
环境:
pip install BabitMF安装创建一个包含语法错误的 Python 模块:
创建以下文件结构和内容(注意
my_module.py中故意制造的IndentationError):~/workplace/my_python_module/my_module.py的内容:尝试使用
module_manager install安装该模块:在终端中切换到
~/workplace目录。使用通过 pip 安装找到的module_manager可执行文件完整路径,并设置LD_LIBRARY_PATH。观察安装命令的输出:
命令报告安装成功,即使模块代码存在语法错误。
尝试在 BMF 图中使用已安装的模块:
创建一个简单的 BMF Python 脚本(例如
test.py)并在图中包含my_python_module。观察运行时错误:
运行 BMF 脚本时,与 Python 模块语法相关的错误在图初始化/执行阶段被抛出,导致程序崩溃。
预期行为 (Expected behavior):
module_manager install命令在安装过程中应该检测到模块文件的IndentationError(或其他基本的 Python 语法错误),并报告安装失败,提示模块代码无效。实际行为 (Actual behavior):
module_manager install命令成功完成并报告模块已安装。语法错误仅在 BMF 运行时尝试加载和导入 Python 模块文件时被发现,导致一个包含原始 PythonIndentationError的RuntimeError。