Skip to main content

A module for python code execution locally, in separate venv or even separate sandbox container.

Project description

code-executor-py

PyPI version Downloads License GitHub stars

A powerful and flexible Python module for secure code execution in isolated environments. Execute Python code safely in virtual environments locally or in remote sandbox containers.

Features

  • VenvExecutor: Execute code in isolated virtual environments

    • Automatic dependency detection and installation
    • Smart package name resolution
    • Handles import errors intelligently
  • RemoteExecutor: Run code in remote sandbox containers

    • Client-server architecture
    • Secure data serialization
    • Network-isolated execution
  • Smart Package Management

    • Automatically resolves import statements to package names
    • Maps common aliases to correct package names (e.g., 'sklearn' → 'scikit-learn')
    • Dynamically installs missing dependencies

Installation

pip install code-executor-py

Quick Start

Local Execution with VenvExecutor

import pandas as pd
from code_executor_py import VenvExecutor

# Define your function
func_code = """
from sklearn.preprocessing import StandardScaler
import pandas as pd

def process_data(data_df):
    scaler = StandardScaler()
    return pd.DataFrame(scaler.fit_transform(data_df), columns=data_df.columns)
"""

# Create executor and compile function
executor = VenvExecutor()
process_data = executor.create_executable(func_code)

# Execute function with data
test_data = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = process_data(data_df=test_data)
print(result)

Remote Execution (Server)

from code_executor_py import RemoteExecutorServer

# Start a server on port 8099
server = RemoteExecutorServer(host="0.0.0.0", port=8099)
server.run()

Remote Execution (Client)

from code_executor_py import RemoteExecutor

# Connect to the remote server
executor = RemoteExecutor("http://localhost:8099")

# Define your function
func_code = """
def add_numbers(a: int, b: int) -> int:
    return a + b
"""

# Create executable function
add_numbers = executor.create_executable(func_code)

# Execute remotely
result = add_numbers(5, 3)
print(result)  # Output: 8

Advanced Usage

Using with LLMs to Auto-Install Dependencies

from code_executor_py import VenvExecutor
from langchain_openai import ChatOpenAI

# Create executor with LLM for smart package resolution
executor = VenvExecutor(
    llm=ChatOpenAI(temperature=0),
    debug_mode=True
)

# The executor can now ask the LLM for the correct package name
# when encountering unknown imports

Custom Base Packages

from code_executor_py import VenvExecutor

# Create executor with custom base packages
executor = VenvExecutor(
    venv_path="./custom_venv",
    base_packages=["numpy", "pandas", "matplotlib", "scipy"]
)

How It Works

  1. Code Analysis: Your function code is analyzed to extract imports
  2. Environment Preparation: Dependencies are automatically installed in isolated environments
  3. Secure Execution: Code runs in a separate process with proper error handling
  4. Result Serialization: Results are properly serialized and returned to your main program

Security Benefits

  • Isolation: Code executes in separate environments, protecting your main application
  • Dependency Management: Avoid conflicts with your application's dependencies
  • Resource Control: Limit the resources available to executed code (especially with remote execution)
  • Network Isolation: Remote execution provides complete network isolation

Use Cases

  • AI/ML Pipelines: Safely execute generated or user-provided code
  • Data Processing: Run data transformation scripts in isolation
  • Teaching/Education: Create safe execution environments for student code
  • Microservices: Execute code remotely for resource-intensive operations

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.

Author

Sawradip Saha - GitHub - Email

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code_executor_py-0.2.2.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

code_executor_py-0.2.2-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file code_executor_py-0.2.2.tar.gz.

File metadata

  • Download URL: code_executor_py-0.2.2.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for code_executor_py-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c6b09ea6f593c09087ba08bcd3a92637c6100a9cb0089301c01fb86bdbc9345f
MD5 3206bae9953de098dc2b5ae99d934cd6
BLAKE2b-256 639fc0a1cfdcd54e7fbc1345e487c03c391b3adbfd6feede18ddca53fb78408d

See more details on using hashes here.

File details

Details for the file code_executor_py-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for code_executor_py-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3d94938f5ab530dcb1c34bd1f21efab78ae8c6568599faad7fcffd5bd87bd8de
MD5 7c1eef292b903519ba58f721e5ca6bd7
BLAKE2b-256 427ebab4da4d6836b9d61044cd50595eb19947e02bec0f3ebc2cfefacfe65b39

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page