__init__.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import sys
  2. import inspect
  3. import importlib
  4. from pathlib import Path
  5. VENDOR_DIR = Path(__file__).parent
  6. VENDORED_LIBS = {
  7. # sys.path dir: library name
  8. 'python-atomicwrites': 'atomicwrites',
  9. 'django-taggit': 'taggit',
  10. 'pydantic-pkgr': 'pydantic_pkgr',
  11. 'pocket': 'pocket',
  12. 'base32-crockford': 'base32_crockford',
  13. }
  14. def load_vendored_libs():
  15. for lib_subdir, lib_name in VENDORED_LIBS.items():
  16. lib_dir = VENDOR_DIR / lib_subdir
  17. assert lib_dir.is_dir(), 'Expected vendor libary {lib_name} could not be found in {lib_dir}'
  18. try:
  19. lib = importlib.import_module(lib_name)
  20. # print(f"Successfully imported lib from environment {lib_name}: {inspect.getfile(lib)}")
  21. except ImportError:
  22. sys.path.append(str(lib_dir))
  23. try:
  24. lib = importlib.import_module(lib_name)
  25. # print(f"Successfully imported lib from vendored fallback {lib_name}: {inspect.getfile(lib)}")
  26. except ImportError as e:
  27. print(f"Failed to import lib from environment or vendored fallback {lib_name}: {e}", file=sys.stderr)
  28. sys.exit(1)