Выполнение кода python в памяти без файла на диске
Задача, прочитать свой собственный код, запустить его, как копию в памяти. После удалить начальный файл, оставшись только в оперативной памяти.
Все заглохло на начальном этапе:
c = """
s = __import__('inspect')
code = s.getsource(s.currentframe())
"""
import inspect
import sys
code = inspect.getsource(inspect.currentframe())
e = compile(c, '<strig>', 'exec')
exec(e)
Здесь, пока, скрипт читает не свой код а пытается запустить в памяти готовый. В готовом коде динамический импорт библиотеки inspect и попытка прочитать свой код. Ошибка возникает на последней строчке exec(e):
OSError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_10756/3328276555.py in <module>
10
11 e = compile(c, '<strig>', 'exec')
---> 12 exec(e)
13
14
<strig> in <module>
~\anaconda3\lib\inspect.py in getsource(object)
1022 or code object. The source code is returned as a single string. An
1023 OSError is raised if the source code cannot be retrieved."""
-> 1024 lines, lnum = getsourcelines(object)
1025 return ''.join(lines)
1026
~\anaconda3\lib\inspect.py in getsourcelines(object)
1004 raised if the source code cannot be retrieved."""
1005 object = unwrap(object)
-> 1006 lines, lnum = findsource(object)
1007
1008 if istraceback(object):
~\anaconda3\lib\inspect.py in findsource(object)
833 lines = linecache.getlines(file)
834 if not lines:
--> 835 raise OSError('could not get source code')
836
837 if ismodule(object):
OSError: could not get source code
Я так понимаю, скрипт не может получить свой код, от чего и ошибка. Подскажите, куда смотреть в этой ситуации? Может есть готовое решение запуска копии в память без файла? Или можно как-то иначе сделать динамическую, без файла копию скрипта?