I was thinking of that, but I only have one test computer and I'm worried if installing python does fix the issue, I then wont be able to revert it easily to its previous state to continue testing. At first (just in pycharm, before trying exe) my scripts were all using verify=f"{root_path}/Cisco Umbrella Root CA.crt" which is a cert I got from the Meraki Dashboard I think? That worked for months until one day it stopped, so I went to the Dashboard again and found the cert was now DigiCert Global Root G2.crt - so I swapped it and it worked fine. DigiCert was the one I was using when I first tried to package into exe. When it didn't work I also tried Digicert TLS RSA etc etc. Then I tried just relying on Certifi - didnt work for the exe but I noticed my pycharm code was using it ok (didnt work a year ago when I first started coding) - so I have now changed the api calls in every script to just remove the verify bit. script_path = sys.argv[0] root_path = os.path.dirname(os.path.abspath(script_path)) def get_network_names(): logging_config.log_function_start() retry_count = 3 timeout = 1 networks_url = f"https://api.meraki.com/api/v1/organizations/{org_id}/networks" for attempt in range(retry_count): try: networks = requests.get(networks_url, headers=headers, timeout=timeout) logging_config.log_API_CALL(f"GET 1: {networks_url} {networks}") time.sleep(DELAY) network_data = networks.json() print(network_data) if networks.status_code not in [200, 201]: logging_config.log_info(f"Error! HTTP status code: {networks.status_code}, Response text: {networks.text}") messagebox.showerror("Error", (f"Error! HTTP status code: {networks.status_code}, Response text: {networks.text}")) return [] # Return an empty list to indicate failure for network in networks.json(): network_name_to_id[network["name"].lower()] = network["id"] network_names = sorted([network["name"].lower() for network in networks.json()]) break except requests.exceptions.Timeout: logging_config.log_exception(f"Request timed out. Retrying... Attempt {attempt + 1}/{retry_count}") time.sleep(DELAY) except requests.exceptions.HTTPError as e: logging_config.log_exception(f"HTTP Error occurred: {e}") messagebox.showerror("Error", str(e)) return [] except requests.exceptions.RequestException as e: logging_config.log_exception(f"Request Exception occurred: {e}") messagebox.showerror("Error", str(e)) return [] except Exception as e: logging_config.log_exception(f"Unhandled Exception occurred: {e}") messagebox.showerror("Error", str(e)) return [] logging_config.log_function_finish() return network_names, network_name_to_id, network_data
... View more