Добавить скрипт Python во время выполнения - PullRequest
2 голосов
/ 28 октября 2010

Я начинаю работать с Python и работаю над проектом, и я хотел бы иметь возможность загружать и запускать скрипт динамически во время выполнения.

Общая идея заключается в том, чтобы иметь возможность подключаться к серверу, загружать скрипт Python по требованию и запускать только что загруженный скрипт без необходимости перезапуска программы или жесткого кода этого конкретного скрипта в программе.,

Программа, с которой я работаю, использует Python для сценариев и выполнения, а C ++ - для другого кода, такого как рендеринг и математика.

Я хотел бы иметь возможность использовать python для запуска скриптов, которые были загружены с сервера (для таких вещей, как пользовательский контент).

Мне было интересно, возможно ли это, или мне следует использовать другой язык сценариев (возможно, LUA) для этой ситуации?

Спасибо, Th3flyboy

Ответы [ 3 ]

1 голос
/ 28 октября 2010

Это вполне возможно, хотя и крайне небезопасно.

Вам необходимо скачать, используя urllib2.urlopen , а затем выполнить результат, используя exec .Я не хочу объяснять дальше из-за последствий для безопасности.

Редактировать : объяснение проблем безопасности.

В Python (CPython) в настоящее время нет способаесть песочница .В результате любой ненадежный код имеет доступ ко всем возможностям, которые Python имеет на вашей машине (для конкретного пользователя).Это может быть частично решено с помощью специализированного пользователя и лучших решений на уровне операционной системы.Однако они сложны.

Примером песочницы является способ, которым Java ограничивает доступ апплетов к компьютеру.

Lua часто используется в программировании игр.Известный пример - World of Warcraft .Одной из основных причин является то, что она может быть изолированной .Решить, как разрешить ненадежный код, непросто, но, по крайней мере, его можно защитить гораздо проще, чем Python.

1 голос
/ 28 октября 2010

Вы определенно можете сделать это.Используйте urllib для загрузки или создания сценария, а затем импортируйте его.Каждый раз, когда вы загружаете скрипт в PYTHONPATH, он будет работать как шарм.

Например:

from urllib import urlretrieve
urlretrieve('http://www.mysite.com/myscript.py', '/home/me/script.py')
import script

Вы также можете создать скрипт самостоятельно из шаблона,извлечение данных из Интернета (возможно, в формате xml или из базы данных) и использование возможностей обработки текста Python для внесения необходимых корректировок.

0 голосов
/ 28 октября 2010

Любой язык программирования, позволяющий запускать внешний скрипт, должен уметь выполнять свою работу.Это означает практически все языки.Подойдут почти все динамические языки.

В python существует множество способов подключиться к серверу и получить URL-адрес.Для выполнения вы можете использовать модуль подпроцесса

...