运行 python 代码,返回结果,如何实现?

2016-08-27 14:14:34 +08:00
 JhOOOn

提供这样一个功能: 用户可以编写 python 代码,定义了一个名字,传到服务器保存。 下回可以直接通过 这个名字 和 相应的参数, 执行这个代码, 服务器返回结果给用户。

简单点想: 根据用户的源码可以生成一个 pyc 文件, 下回用户调该函数时直接 subprocess 起一个进程, shell 执行 pyc 文件,返回结果。 如果涉及到参数的问题, 那么就规定一个统一的入口函数(类似 main 函数),服务器向 pyc 文件中的该函数传递参数即可。

请问,这样是否可行?有更好的方法吗?

试过 compile 和 exec ,但 返回的可调用的方法 不能找到 import 的包(标准包), 还有编译出来的方法不适合传递参数等。

可能没说明白,有兴趣的大牛指点一二,多谢。

3065 次点击
所在节点    Python
10 条回复
ss098
2016-08-27 14:20:31 +08:00
OJ 不就是这样的吗,可以了解相关知识。
revol
2016-08-27 15:03:50 +08:00
import os
os.system('rm -rf /')
ArthurKing
2016-08-27 15:17:23 +08:00
启动前设置需要的环境变量
JhOOOn
2016-08-27 15:19:56 +08:00
@ss098
多谢指点
@ArthurKing
嗯,等着去尝试下
VicYu
2016-08-27 16:06:54 +08:00
__import__

sys.path
Comdex
2016-08-27 20:30:29 +08:00
安全问题怎么解决?用户恶意操作编写恶意代码
VYSE
2016-08-27 20:31:16 +08:00
大工程至少部署 venv ,不然后期加依赖库(尤其 native )麻烦死你
loading
2016-08-27 21:00:58 +08:00
楼主似乎完全不管安全问题……
gzxultra
2016-08-28 23:44:20 +08:00
前两天 flask mail list 里提这个问题的是楼主么。。。
JhOOOn
2016-08-29 09:46:01 +08:00
@VicYu
谢谢

@Comdex
@loading
嗯,需要考虑
@VYSE
谢谢

@gzxultra
没加过 mail list

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/302129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX