我正在开始python并且正在开发一个项目,我希望能够做的一件事就是在运行时动态下载并运行脚本。
一般的想法是能够连接到服务器,按需下载python脚本,并运行刚下载的脚本,而无需重新启动程序或将特定脚本硬编码到程序中。
我正在使用的程序使用Python进行脚本和执行,使用C ++进行渲染和数学等其他代码。
我希望能够使用python来运行从服务器下载的脚本(用于诸如用户生成内容之类的内容)。
我想知道这是否可能,或者我是否应该使用另一种脚本语言(可能是LUA)?
谢谢, Th3flyboy
答案 0 :(得分:1)
你绝对可以做到这一点。使用urllib
下载或生成脚本,然后导入它。只要你将脚本下载到PYTHONPATH,它就会像魅力一样。
例如:
from urllib import urlretrieve
urlretrieve('http://www.mysite.com/myscript.py', '/home/me/script.py')
import script
您也可以自己从模板生成脚本,从在线(可能是xml或数据库)中提取数据,并使用Python的文本处理功能进行必要的调整。
答案 1 :(得分:1)
这很可能,虽然非常不安全。
您需要使用urllib2.urlopen下载,然后使用exec执行结果。由于安全隐患,我不愿进一步解释。
修改:有关安全问题的说明。
在Python(CPython)中,目前无法拥有sandbox。结果是任何不受信任的代码都可以访问Python在您的机器上具有的所有功能(针对特定用户)。这可以通过使用专业用户和更好的操作系统级解决方案来部分解决。然而,它们很复杂。
沙盒的一个例子是Java限制applet完全访问该机器的方式。
Lua经常用于游戏编程。着名的例子是World of Warcraft。其中一个主要原因是它可能是sandboxed。确定允许不受信任的代码的功能并不简单,但至少它可以比Python更容易保护。
答案 2 :(得分:0)
任何允许运行外部脚本的编程语言都应该能够胜任。这实际上意味着所有语言。几乎所有动态语言都可以。
使用python,有多种方法可以连接到服务器并获取URL。执行时,您可以使用子进程模块