Como carregar um módulo do código em uma strin

Tenho algum código na forma de uma string e gostaria de criar um módulo sem gravar no disc

Quando tento usar imp e um objeto StringIO para fazer isso, recebo:

>>> imp.load_source('my_module', '', StringIO('print "hello world"'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: load_source() argument 3 must be file, not instance
>>> imp.load_module('my_module', StringIO('print "hello world"'), '', ('', '', 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: load_module arg#2 should be a file or None

Como posso criar o módulo sem ter um arquivo real? Como alternativa, como posso agrupar um StringIO em um arquivo sem gravar no disco?

ATUALIZAR

NOTA: Este problema também é um problema no python

O código que estou tentando carregar é apenas parcialmente confiável. Passei por isso com ast e determinei que ele não importa nada ou que não gosto, mas não confio o suficiente para executá-lo quando houver variáveis locais em execução que possam ser modificadas e Não confio no meu próprio código para ficar fora do caminho do código que estou tentando importa

Criei um módulo vazio que contém apenas o seguinte:

def load(code):
    # Delete all local variables
    globals()['code'] = code
    del locals()['code']

    # Run the code
    exec(globals()['code'])

    # Delete any global variables we've added
    del globals()['load']
    del globals()['code']

    # Copy k so we can use it
    if 'k' in locals():
        globals()['k'] = locals()['k']
        del locals()['k']

    # Copy the rest of the variables
    for k in locals().keys():
        globals()[k] = locals()[k]

Então você pode importarmymodule e ligue paramymodule.load(code). Isso funciona para mim porque garanti que o código que estou carregando não useglobals. Também oglobal palavra-chave @ é apenas uma diretiva de analisador e não pode se referir a nada fora do exe

Este é realmente muito trabalho paraimport o módulo sem gravar no disco, mas se você quiser fazer isso, acredito que seja o melhor caminh

questionAnswers(3)

yourAnswerToTheQuestion