[MO] Fix showing graceful error message when no ngraph case

Move frontend-related imports inside appropriate functions
And use try/except if import fails to show graceful error message
This commit is contained in:
Michael Nosov 2021-06-25 16:53:04 +03:00
parent 27441c2310
commit 72d52bd946

View File

@ -21,8 +21,6 @@ except ImportError:
from extensions.back.SpecialNodesFinalization import RemoveConstOps, CreateConstNodesReplacement, NormalizeTI
from mo.back.ie_ir_ver_2.emitter import append_ir_info
from mo.moc_frontend.pipeline import moc_pipeline
from mo.moc_frontend.serialize import moc_emit_ir
from mo.graph.graph import Graph
from mo.middle.pattern_match import for_graph_and_each_sub_graph_recursively
from mo.pipeline.common import prepare_emit_ir, get_ir_version
@ -43,9 +41,6 @@ from mo.utils.telemetry_utils import send_params_info, send_framework_info
from mo.utils.version import get_version, get_simplified_mo_version, get_simplified_ie_version
from mo.utils.versions_checker import check_requirements # pylint: disable=no-name-in-module
# pylint: disable=no-name-in-module,import-error
from ngraph.frontend import FrontEndManager
def replace_ext(name: str, old: str, new: str):
base, ext = os.path.splitext(name)
@ -270,6 +265,7 @@ def prepare_ir(argv: argparse.Namespace):
if argv.feManager is None or argv.framework not in new_front_ends:
graph = unified_pipeline(argv)
else:
from mo.moc_frontend.pipeline import moc_pipeline
ngraph_function = moc_pipeline(argv)
return graph, ngraph_function
@ -358,6 +354,7 @@ def driver(argv: argparse.Namespace):
if graph is not None:
ret_res = emit_ir(graph, argv)
else:
from mo.moc_frontend.serialize import moc_emit_ir
ret_res = moc_emit_ir(ngraph_function, argv)
if ret_res != 0:
@ -378,7 +375,7 @@ def driver(argv: argparse.Namespace):
return ret_res
def main(cli_parser: argparse.ArgumentParser, fem: FrontEndManager, framework: str):
def main(cli_parser: argparse.ArgumentParser, frontEndManager, framework: str):
telemetry = tm.Telemetry(app_name='Model Optimizer', app_version=get_simplified_mo_version())
telemetry.start_session('mo')
telemetry.send_event('mo', 'version', get_simplified_mo_version())
@ -392,7 +389,7 @@ def main(cli_parser: argparse.ArgumentParser, fem: FrontEndManager, framework: s
if framework:
argv.framework = framework
argv.feManager = fem
argv.feManager = frontEndManager
ov_update_message = None
if not hasattr(argv, 'silent') or not argv.silent:
@ -435,5 +432,12 @@ def main(cli_parser: argparse.ArgumentParser, fem: FrontEndManager, framework: s
if __name__ == "__main__":
from mo.utils.cli_parser import get_all_cli_parser
fem = FrontEndManager()
fem = None
try:
# pylint: disable=no-name-in-module,import-error
from ngraph.frontend import FrontEndManager
fem = FrontEndManager()
except ImportError:
pass
sys.exit(main(get_all_cli_parser(fem), fem, None))