5分钟上手 Monty:极简安全的Python解释器
本指南将帮助你在5分钟内安装Monty并运行第一个AI生成的Python代码
环境要求
支持的操作系统
运行环境
所需工具
Python包管理器,用于安装pydantic-monty
操作步骤
安装Monty
使用pip安装pydantic-monty包
pip install pydantic-monty
预期结果:Successfully installed pydantic-monty-x.x.x 等类似信息
如果遇到权限问题,可以尝试添加 --user 参数
创建第一个Monty脚本
创建一个简单的Python文件来测试Monty
echo "import pydanticmonty
code = '''
x = 41
print(f'Hello Monty! The answer is {x + 1}')
'''
m = pydanticmonty.Monty(code)
result = m.run()
print(f'Output: {result.output}')" > monty_test.py
预期结果:创建monty_test.py文件
在Windows上,可以使用文本编辑器创建文件并复制代码
运行Monty脚本
执行测试脚本,验证Monty是否正常工作
python monty_test.py
预期结果:Hello Monty! The answer is 42 Output: Hello Monty! The answer is 42
如果看到输出结果,说明Monty已成功运行Python代码
尝试外部函数调用
创建一个更复杂的示例,展示Monty如何与外部函数交互
echo "import pydanticmonty
# 定义外部函数
def fetch(url):
return f'Fetched data from {url}'
code = '''
data = fetch('https://example.com')
print(f'Result: {data}')
'''
m = pydanticmonty.Monty(code, externalfunctions=['fetch'])
result = m.run()
print(f'Final output: {result.output}')" > monty_external.py
python monty_external.py
预期结果:Result: Fetched data from https://example.com Final output: Result: Fetched data from https://example.com
这个示例展示了Monty如何安全地调用外部定义的函数
验证成功
如果所有步骤都成功执行,你将看到以下结果:
快速提示
Monty启动极快,通常在微秒级别,适合需要快速执行AI生成代码的场景
使用inputs参数向Monty代码传递变量,使用externalfunctions参数控制可调用的外部函数
Monty默认阻止文件系统、网络和环境变量访问,所有外部访问必须通过你提供的外部函数
常见问题
ModuleNotFoundError: No module named 'pydanticmonty'
确保已正确安装:pip install pydantic-monty,注意包名中的连字符
Permission denied 错误
使用 pip install --user pydantic-monty 或 sudo pip install pydantic-monty
Monty不支持某些Python语法
Monty支持Python子集,主要用于AI生成的简单代码。复杂功能需要通过外部函数实现
下一步
查看官方示例
访问GitHub仓库查看更多高级用法示例
尝试类型检查
使用typecheck=True参数启用Python类型提示检查
实验快照功能
尝试使用dump()和load()方法保存和恢复解释器状态
相关项目推荐
rust-lang/rust
让每个人都能构建可靠高效的软件
rustdesk/rustdesk
一款专为自建远程访问需求设计的开源远程桌面应用程序,可作为TeamViewer的替代方案。
denoland/deno
面向 JavaScript 与 TypeScript 的现代化运行时
tauri-apps/tauri
通过 Web 前端构建更小、更快、更安全的桌面与移动应用程序
astral-sh/uv
基于Rust开发的极速Python包和项目管理器
zed-industries/zed
以思维速度编码——Zed 是由 Atom 和 Tree-sitter 的创作者打造的高性能多人协作代码编辑器。