From b04f68553e9407f4dbf6f3f8e8b1bd1b2d0bed8a Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 15 Jan 2020 10:27:15 +0100 Subject: [PATCH] Tools: use Python 3, improve import checks In more detail: - Change shebang to Python 3. - Suggest installation using pip3 as user. --- Tools/mavlink_shell.py | 25 ++++++++++++++++++------- Tools/mavlink_ulog_streaming.py | 14 ++++++++------ Tools/px_uploader.py | 7 +++++-- Tools/serial/generate_config.py | 12 +++++++----- Tools/uorb_graph/create.py | 11 +++++++---- Tools/upload_log.py | 10 ++++++---- Tools/validate_yaml.py | 20 ++++++++++++-------- 7 files changed, 63 insertions(+), 36 deletions(-) diff --git a/Tools/mavlink_shell.py b/Tools/mavlink_shell.py index 9cb008d5d3..c2954ea7cf 100755 --- a/Tools/mavlink_shell.py +++ b/Tools/mavlink_shell.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Open a shell over MAVLink. @@ -11,16 +11,27 @@ from __future__ import print_function import sys, select import termios from timeit import default_timer as timer +from argparse import ArgumentParser try: from pymavlink import mavutil - import serial -except: - print("Failed to import pymavlink.") - print("You may need to install it with 'pip install pymavlink pyserial'") +except ImportError as e: + print("Failed to import pymavlink: " + e) print("") - raise -from argparse import ArgumentParser + print("You may need to install it with:") + print(" pip3 install --user pymavlink") + print("") + sys.exit(1) + +try: + import serial +except ImportError as e: + print("Failed to import pyserial: " + e) + print("") + print("You may need to install it with:") + print(" pip3 install --user pyserial") + print("") + sys.exit(1) class MavlinkSerialPort(): diff --git a/Tools/mavlink_ulog_streaming.py b/Tools/mavlink_ulog_streaming.py index c320c2bcc9..3b3d151a32 100755 --- a/Tools/mavlink_ulog_streaming.py +++ b/Tools/mavlink_ulog_streaming.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Stream ULog data over MAVLink. @@ -12,15 +12,17 @@ import sys, select, os import datetime from timeit import default_timer as timer os.environ['MAVLINK20'] = '1' # The commands require mavlink 2 +from argparse import ArgumentParser try: from pymavlink import mavutil -except: - print("Failed to import pymavlink.") - print("You may need to install it with 'pip install pymavlink pyserial'") +except ImportError as e: + print("Failed to import pymavlink: " + e) print("") - raise -from argparse import ArgumentParser + print("You may need to install it with:") + print(" pip3 install --user pymavlink") + print("") + sys.exit(1) class MavlinkLogStreaming(): diff --git a/Tools/px_uploader.py b/Tools/px_uploader.py index ed8c106792..88cae2428d 100755 --- a/Tools/px_uploader.py +++ b/Tools/px_uploader.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ############################################################################ # # Copyright (c) 2012-2017 PX4 Development Team. All rights reserved. @@ -742,7 +742,10 @@ def main(): if not pyserial_installed: print("Error: pyserial not installed!") - print(" (Install using: sudo pip install pyserial)") + print("") + print("You may need to install it using:") + print(" pip3 install --user pyserial") + print("") sys.exit(1) # Load the firmware file diff --git a/Tools/serial/generate_config.py b/Tools/serial/generate_config.py index 5593736c4e..df778ee73a 100755 --- a/Tools/serial/generate_config.py +++ b/Tools/serial/generate_config.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#!/usr/bin/env python3 """ Script to generate Serial (UART) parameters and the ROMFS startup script """ from __future__ import print_function @@ -11,11 +11,13 @@ from jinja2 import Environment, FileSystemLoader try: import yaml -except: - print("Failed to import yaml.") - print("You may need to install it with 'sudo pip install pyyaml'") +except ImportError as e: + print("Failed to import yaml: " + e) print("") - raise + print("You may need to install it using:") + print(" pip3 install --user pyyaml") + print("") + sys.exit(1) ## Configuration diff --git a/Tools/uorb_graph/create.py b/Tools/uorb_graph/create.py index 826fb3f7a6..37d3c0531f 100755 --- a/Tools/uorb_graph/create.py +++ b/Tools/uorb_graph/create.py @@ -8,6 +8,7 @@ import codecs import re import colorsys import json +import sys parser = argparse.ArgumentParser( @@ -609,11 +610,13 @@ if args.output == 'json': elif args.output == 'graphviz': try: from graphviz import Digraph - except: - print("Failed to import graphviz.") - print("You may need to install it with 'pip install graphviz'") + except ImportError as e: + print("Failed to import graphviz: " + e) print("") - raise + print("You may need to install it with:") + print(" pip3 install --user graphviz") + print("") + sys.exit(1) output_graphviz = OutputGraphviz(graph) engine='fdp' # use neato or fdp output_graphviz.write(args.file+'.fv', engine=engine) diff --git a/Tools/upload_log.py b/Tools/upload_log.py index 51e6f8e7a7..1ccde34874 100755 --- a/Tools/upload_log.py +++ b/Tools/upload_log.py @@ -16,11 +16,13 @@ import sys try: import requests -except: - print("Failed to import requests.") - print("You may need to install it with 'pip install requests'") +except ImportError as e: + print("Failed to import requests: " + e) print("") - raise + print("You may need to install it using:") + print(" pip3 install --user requests") + print("") + sys.exit(1) SERVER = 'https://logs.px4.io' diff --git a/Tools/validate_yaml.py b/Tools/validate_yaml.py index 345ef03c5d..ee5a303c6f 100755 --- a/Tools/validate_yaml.py +++ b/Tools/validate_yaml.py @@ -9,19 +9,23 @@ import sys try: import yaml -except: - print("Failed to import yaml.") - print("You may need to install it with 'sudo pip install pyyaml'") +except ImportError as e: + print("Failed to import yaml: " + e) print("") - raise + print("You may need to install it using:") + print(" pip3 install --user pyyaml") + print("") + sys.exit(1) try: import cerberus -except: - print("Failed to import cerberus.") - print("You may need to install it with 'sudo pip install cerberus'") +except ImportError as e: + print("Failed to import cerberus: " + e) print("") - raise + print("You may need to install it using:") + print(" pip3 install --user cerberus") + print("") + sys.exit(1) parser = argparse.ArgumentParser(description='Validate YAML file(s) against a schema')