我正在创建类似于this的python程序 。无论如何我想要做的是让用户能够修改自己的程序,但我需要帮助了解这是如何工作的。我查看了源代码,并且在发生这种情况时感到困惑,即使有人可以指出我会对此非常有帮助。我知道程序不会被沙盒化,但这不是我现在担心的事情。如果你能指出我的方向会很棒!谢谢!
答案 0 :(得分:0)
“机器人程序”只是存储为纯文本文件。
editor.py中有一个通用文本编辑器。当您在给定视图中打开机器人时,例如qt4view.py中的Qt4视图,它只是实例化文本编辑器并将其交给机器人的文件。同样,机器人的文件是Python脚本的事实并不重要;它只是将其编辑为文本文件。
同时,战斗代码打开与Python代码相同的机器人文件,文本编辑器将其作为文本文件打开。您可以在game.py中看到此代码:它只使用subprocess
模块运行Python,将机器人文件作为参数传递。
答案 1 :(得分:0)
我的另一个答案涉及你实际问的问题。但我不认为这是你真正想知道的。
你只想知道如何运行一些Python脚本,你有一个路径名,在一个单独的Python解释器中,对吗?
虽然可以从pybotwar代码中找出答案,但是有很多额外的东西会妨碍它理解它 - conf.py
文件,可配置的额外标志等。
但答案很简单:使用subprocess
模块,就像运行任何程序一样。在这种情况下,Python解释器是可执行文件(通常您需要sys.executable
,您正在使用的相同Python解释器),以及您希望作为参数运行的脚本。例如:
script_output = subprocess.check_output([sys.executable, script_path])
subprocess
文档很好地解释了所有不同的选项。