import os import subprocess import sys import zipfile from pathlib import Path def install_plugin_dependencies(): """ Installs dependencies for all plugins in the plugins dir. Args: None Returns: None """ plugins_dir = Path(os.getenv("PLUGINS_DIR", "plugins")) for plugin in plugins_dir.glob("*.zip"): with zipfile.ZipFile(str(plugin), "r") as zfile: try: basedir = zfile.namelist()[0] basereqs = os.path.join(basedir, "requirements.txt") extracted = zfile.extract(basereqs, path=plugins_dir) subprocess.check_call( [sys.executable, "-m", "pip", "install", "-r", extracted] ) os.remove(extracted) os.rmdir(os.path.join(plugins_dir, basedir)) except KeyError: continue if __name__ == "__main__": install_plugin_dependencies()