PaddleClas棘手问题:ImportError: attempted relative import with no known parent package

PaddleClas ImportError问题

问题背景

事先通过pip install -e .安装了editable版本的PaddleClas包,也在PYTHONPATH当中添加了相关路径,但是在执行模型推理时,还是遇到了这个问题:

Traceback (most recent call last):
  File "/root/mambaforge/envs/py310/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/mambaforge/envs/py310/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/workspace/PaddleClas/deploy/python/predict_cls.py", line 19, in <module>
    from paddleclas.deploy.utils import logger, config
  File "/workspace/PaddleClas/paddleclas.py", line 31, in <module>
    from .ppcls.arch import backbone
ImportError: attempted relative import with no known parent package

尝试的方法

结合以前解决过ImportError的经验,首先尝试用-m参数来作为模板运行,又尝试移动到更高级的目录,以囊括代码执行路径中的各级路径,但都以失败告终。

成因&方法

最后检查项目的setup.py文件发现,项目的包名字是paddleclas,但是在项目根目录下,执行主要初始化功能的文件也叫paddleclas.py,导致PYTHON解释器在执行的时候,先找到了这个文件,把paddleclas当成了一个独立的文件来执行,导致相对导入全部失效。

于是,尝试把paddleclas.py重命名为paddleclas_main.py,问题也顺利解决。

posted @ 2024-12-11 20:11  Gold_stein  阅读(0)  评论(0编辑  收藏  举报