From ca31d75cc3203f722fd689ccf7d51002ebab863f Mon Sep 17 00:00:00 2001 From: Frantisek Hrbata Date: Wed, 30 Aug 2023 08:14:50 +0200 Subject: [PATCH] fix(tools): extend error message for failed python module import Currently idf.py reports just "Please use idf.py only in an ESP-IDF shell environment". Sometimes it may be useful to know for which module the import failed. Also the problem does not have to be related to shell environment only, but the python venv can be corrupted. This adds a little bit more verbose error message. Signed-off-by: Frantisek Hrbata --- tools/idf.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/idf.py b/tools/idf.py index bc2942ae49..d09deffaab 100755 --- a/tools/idf.py +++ b/tools/idf.py @@ -41,9 +41,15 @@ try: debug_print_idf_version, get_target, merge_action_lists, print_warning) if os.getenv('IDF_COMPONENT_MANAGER') != '0': from idf_component_manager import idf_extensions -except ImportError: +except ImportError as e: # For example, importing click could cause this. - print('Please use idf.py only in an ESP-IDF shell environment.', file=sys.stderr) + print((f'Cannot import module "{e.name}". This usually means that "idf.py" was not ' + f'spawned within an ESP-IDF shell environment or the python virtual ' + f'environment used by "idf.py" is corrupted.\n' + f'Please use idf.py only in an ESP-IDF shell environment. If problem persists, ' + f'please try to install ESP-IDF tools again as described in the Get Started guide.'), + file=sys.stderr) + sys.exit(1) # Use this Python interpreter for any subprocesses we launch