Execute a Python script in a virtual environment
()
| 14497 | |
| 14498 | @app.route("/api/python/execute", methods=["POST"]) |
| 14499 | def execute_python_script(): |
| 14500 | """Execute a Python script in a virtual environment""" |
| 14501 | try: |
| 14502 | params = request.json |
| 14503 | script = params.get("script", "") |
| 14504 | env_name = params.get("env_name", "default") |
| 14505 | filename = params.get("filename", f"script_{int(time.time())}.py") |
| 14506 | |
| 14507 | if not script: |
| 14508 | return jsonify({"error": "Script content is required"}), 400 |
| 14509 | |
| 14510 | # Create script file |
| 14511 | script_result = file_manager.create_file(filename, script) |
| 14512 | if not script_result["success"]: |
| 14513 | return jsonify(script_result), 500 |
| 14514 | |
| 14515 | # Get Python path for environment |
| 14516 | python_path = env_manager.get_python_path(env_name) |
| 14517 | script_path = script_result["path"] |
| 14518 | |
| 14519 | # Execute script |
| 14520 | command = f"{python_path} {script_path}" |
| 14521 | logger.info(f"🐍 Executing Python script in env {env_name}: {filename}") |
| 14522 | result = execute_command(command, use_cache=False) |
| 14523 | |
| 14524 | # Clean up script file |
| 14525 | file_manager.delete_file(filename) |
| 14526 | |
| 14527 | result["env_name"] = env_name |
| 14528 | result["script_filename"] = filename |
| 14529 | logger.info(f"📊 Python script execution completed") |
| 14530 | return jsonify(result) |
| 14531 | |
| 14532 | except Exception as e: |
| 14533 | logger.error(f"💥 Error executing Python script: {str(e)}") |
| 14534 | return jsonify({"error": f"Server error: {str(e)}"}), 500 |
| 14535 | |
| 14536 | # ============================================================================ |
| 14537 | # AI-POWERED PAYLOAD GENERATION (v5.0 ENHANCEMENT) UNDER DEVELOPMENT |
nothing calls this directly
no test coverage detected