运行LayoutLM预测脚本报ImportError无法导入LayoutlmConfig
错误原因
- 核心问题是模块命名冲突+路径加载优先级错误:你当前conda环境里安装的pypi源
layoutlm包,和unilm仓库自带的本地layoutlm源码模块重名。运行脚本时Python优先加载了anaconda3/lib/site-packages下的第三方发布包,这个包的对外导出接口根本没有LayoutlmConfig、FunsdDataset、LayoutlmForTokenClassification这三个类,直接触发导入报错。 - 你运行脚本时的工作目录不对,没有定位到unilm仓库下的layoutlm项目根目录,Python解释器检索不到本地的layoutlm源码,才会错加载全局环境里的同名第三方包。
修复流程
- 第一步:先卸载全局环境里冲突的第三方layoutlm包,从根源消除命名干扰
pip uninstall -y layoutlm
- 第二步:切换终端工作目录到unilm仓库的layoutlm根目录,保证Python能优先检索到本地源码模块
cd unilm/layoutlm
- 第三步:修正预测命令的路径和换行符,重新执行即可。注意Windows环境命令行换行要用
^,Linux/macOS用\,换行符后不能加多余空格,路径要对应你自己的文件存放位置:
Windows环境执行命令:
python examples/seq_labeling/run_seq_labeling.py ^ --do_predict ^ --data_dir <你的data文件夹绝对路径> ^ --model_type layoutlm ^ --model_name_or_path <你的output模型文件夹绝对路径> ^ --output_dir <预测结果输出文件夹绝对路径> ^ --labels <你的labels.txt文件绝对路径> ^ --fp16
Linux/macOS环境执行命令:
python examples/seq_labeling/run_seq_labeling.py \ --do_predict \ --data_dir <你的data文件夹绝对路径> \ --model_type layoutlm \ --model_name_or_path <你的output模型文件夹绝对路径> \ --output_dir <预测结果输出文件夹绝对路径> \ --labels <你的labels.txt文件绝对路径> \ --fp16
校验小技巧:正式运行脚本前,可以先在当前目录打开Python交互终端,执行from layoutlm import FunsdDataset, LayoutlmConfig, LayoutlmForTokenClassification,如果没有报错就说明模块加载正确,后续预测流程不会再触发这个导入错误。
内容的提问来源于stack exchange,提问作者Jyoti yadav
相关产品推荐
相关产品推荐

