| """Script to check imports of heavy or optional packages and report status. | |
| Run with the project's Python to see what packages are importable in the current environment. | |
| """ | |
| import importlib | |
| import sys | |
| import os | |
| # Ensure repository root is first on sys.path so our local stubs are preferred over site-packages | |
| PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) | |
| if PROJECT_ROOT not in sys.path: | |
| sys.path.insert(0, PROJECT_ROOT) | |
| packages = [ | |
| "torch", | |
| "z3", | |
| "networkx", | |
| "matplotlib", | |
| "scipy", | |
| "h5py", | |
| "jax", | |
| "tensorflow", | |
| ] | |
| def check_package(name: str): | |
| try: | |
| mod = importlib.import_module(name) | |
| print(f"OK: {name} -> {mod.__file__ if hasattr(mod, '__file__') else repr(mod)}") | |
| return True | |
| except Exception as e: | |
| print(f"FAIL: {name} -> {e}") | |
| return False | |
| def main(): | |
| results = {p: check_package(p) for p in packages} | |
| ok = [p for p, r in results.items() if r] | |
| fail = [p for p, r in results.items() if not r] | |
| print("\nSummary:\n", f"OK ({len(ok)}): {ok}", f"FAIL ({len(fail)}): {fail}", sep='\n') | |
| if fail: | |
| sys.exit(2) | |
| if __name__ == '__main__': | |
| main() | |