1

私はGoogleアプリエンジンを使用しており、基本的にユーザーがコードをアップロードできるようにしようとしています。コードは後でサーバーによって実行されます。また、変数をスクリプトに送信できるようにする必要もあります。そのため、最初にデスクトップですべてを実行していたときに、すべてを動的にインポートしました (スクリプトの名前が変数に格納されているように)。しかし、Google App Engine 環境のファイルシステムが原因で、これを行うことができなくなりました。

プレーンテキストでコードを取得できるように、既にデータベースをセットアップしています。しかし、ファイルからではなく、Pythonコードを含む変数からPythonスクリプトをインポートできる方法があったかどうか知りたいです。

たとえば、これがプレーンテキスト コードである場合、これを適切に実行するにはどうすればよいでしょうか。

code = """
def Main(var):
    print "you entered: " + var
"""
4

1 に答える 1

6

まず、コードが存在するモジュールを作成します。

# define module_name somewhere
import types
module = types.ModuleType(module_name)

おそらくそのモジュールも登録したくなるでしょう:

import sys
sys.modules[module_name] = module

次に、コードをコンパイルします。

# source should the code to execute
# filename should be a pseudo-filename that the code's from
# (it doesn't actually have to exist; it's used for error messages)
code_object = compile(source, filename, 'exec')

次に、モジュールのコンテキストでコード オブジェクトを実行します。

exec code_object in module.__dict__
于 2012-09-30T23:28:03.087 に答える