java在python沙箱环境下执行脚本文件
上一篇文章我演示了通过命令行的方式安装virtualenv,以及激活使用python沙箱环境。但是我实际的需求需要通过java来执行该脚本,因此命令行方式的激活沙箱是不合适的。此时,就需要另外一种无需手动激活的方式来使用。
·
java在python沙箱环境下执行脚本文件
上一篇文章我演示了通过命令行的方式安装virtualenv,以及激活使用python沙箱环境。但是我实际的需求需要通过java来执行该脚本,因此命令行方式的激活沙箱是不合适的。此时,就需要另外一种无需手动激活的方式来使用。
一,关于activate_this.py文件
virtualenv提供了一个无需手动激活沙箱环境的文件activate_this.py,使用方式如下(Mac python3.7):
import os
import sys
activate_this = '/Users/sw/Documents/virtualenv/venv/bin/activate_this.py'
exec(open(activate_this, encoding='utf-8').read())
cmd = "/Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python /Users/sw/Documents/virtualenv/venv/service-api/xxx.py "
os.system(cmd)
原本我们想要在沙箱环境下执行xxx.py的操作如下(我的虚拟环境名称为my_virtual_env):
> cd my_virtual_env # 进入虚拟环境目录
> source bin/activate # 激活虚拟环境
(my_virtual_env)> python /Users/sw/Documents/virtualenv/venv/service-api/xxx.py
(my_virtual_env)> deactivate # 退出虚拟环境
使用activate_this.py文件的方式如下:
-
创建启动文件start.py
import os import sys activate_this = '/Users/sw/Documents/virtualenv/venv/bin/activate_this.py' exec(open(activate_this, encoding='utf-8').read()) cmd = "/Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python /Users/sw/Documents/virtualenv/venv/service-api/xxx.py " os.system(cmd)
-
通过start.py执行xxx.py
> python start.py
二,java在沙箱环境下执行xxx.py
public Object adapter() throws IOException, InterruptedException {
ProcessBuilder processBuilder = new ProcessBuilder("/Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python", scriptPath + "start.py");
Process process = processBuilder.start();
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String result = input.readLine();
input.close();
ir.close();
process.waitFor();
log.info("result = " + result);
result = result.replace("b'", "");
result = result.replace("}'", "}");
result = result.replace("\\\\", "\\");
JSONObject object = JSONObject.parseObject(result);
return object;
}
此时,就能够在virtualenv环境下执行脚本文件,获取结果。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)