Зависимости IronPython для скриптов, хранящихся в виде строк
У меня есть приложение C #, которое хранит файлы сценариев Python (* .py) в виде строк. Я загружаю их, используя:
scriptEngine.CreateScriptSourceFromString(code);
Но теперь у меня есть несколько файлов сценариев с зависимостями между ними (импорт). Чтобы обработать зависимости, я мог бы сохранить все строки обратно в файлы в папке и загрузить скрипт, который я хочу выполнить, используя:
scriptEngine.CreateScriptSourceFromFile(filePath);
но это сделало бы все файлы скриптов видимыми. Есть ли способ достичь этого в памяти, чтобы файлы сценариев не сначала сохранялись на диск, а загружались непосредственно из строк?
TL; DR: пример того, как это может выглядеть:
myutils.py:
def SomeMethod(p):
print ('SomeMethod(p=%s)' % p)
script1.py:
import myutils;
if __name__ == '__main__':
myutils.SomeMethod('script1')
script2.py:
import myutils;
if __name__ == '__main__':
myutils.SomeMethod('script2')
В моем приложении скрипты хранятся в виде строк. что-то вроде
Dictionary<string, string> filePathToContent = new Dictionary<string, string>();
filePathToContent["myutils.py"] = "..."; // The script file content.
filePathToContent["script1.py"] = "..."; // The script file content.
filePathToContent["script2.py"] = "..."; // The script file content.
Я хочу вызвать script1.py без необходимости сначала сохранять сценарии в папке. Примечание: код является лишь упрощенным примером того, что у меня есть.