MCPcopy Create free account
hub / github.com/0x4m4/hexstrike-ai / PythonEnvironmentManager

Class PythonEnvironmentManager

hexstrike_server.py:5705–5741  ·  view source on GitHub ↗

Manage Python virtual environments and dependencies

Source from the content-addressed store, hash-verified

5703 STRIKETHROUGH = '\033[9m'
5704
5705class PythonEnvironmentManager:
5706 """Manage Python virtual environments and dependencies"""
5707
5708 def __init__(self, base_dir: str = "/tmp/hexstrike_envs"):
5709 self.base_dir = Path(base_dir)
5710 self.base_dir.mkdir(exist_ok=True)
5711
5712 def create_venv(self, env_name: str) -> Path:
5713 """Create a new virtual environment"""
5714 env_path = self.base_dir / env_name
5715 if not env_path.exists():
5716 logger.info(f"🐍 Creating virtual environment: {env_name}")
5717 venv.create(env_path, with_pip=True)
5718 return env_path
5719
5720 def install_package(self, env_name: str, package: str) -> bool:
5721 """Install a package in the specified environment"""
5722 env_path = self.create_venv(env_name)
5723 pip_path = env_path / "bin" / "pip"
5724
5725 try:
5726 result = subprocess.run([str(pip_path), "install", package],
5727 capture_output=True, text=True, timeout=300)
5728 if result.returncode == 0:
5729 logger.info(f"📦 Installed package {package} in {env_name}")
5730 return True
5731 else:
5732 logger.error(f"❌ Failed to install {package}: {result.stderr}")
5733 return False
5734 except Exception as e:
5735 logger.error(f"💥 Error installing package {package}: {e}")
5736 return False
5737
5738 def get_python_path(self, env_name: str) -> str:
5739 """Get Python executable path for environment"""
5740 env_path = self.create_venv(env_name)
5741 return str(env_path / "bin" / "python")
5742
5743# Global environment manager
5744env_manager = PythonEnvironmentManager()

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected