2017-02-03 16 views
0

をインポートするためにここにレシピがあります。さらに動的に生成されたPythonの-2.7.13モジュール(Pythonのレシピ)

Q1>私は、このようにインポートされたモジュールから関数を使用することができます。

myModule = "myPythonScriptName" 

ここで私は唯一の変数を使用してインポート体操を行う「MyModuleという」。 これはできますか?

myResult = myModule.myScriptFunction(selfArg, myArguments, ....) 

そしてそこにある:

は、私はCLIENT1が返されたデータを処理するためにmyScript1.pyを呼び出すPOSTform1にアクセスするにはArduinoのYUNシールド上で実行されているPythonで書かれた非常に小さなウェブサイトを持っていると仮定します。上記のレシピを使用して、WebサーバーにmyScript1.pyをインポートするコードを追加し、データ処理を計画に従って進めます。

Q2> myScript1.pyから作成したモジュールをアンインストール/アンロード/取り除き、そのリソースを再利用できるようになりましたか?ウェブに関係する多数のモジュールが完成することを念頭に置いて考えてくださいサーバ?

Q3> Q2のようにmyScript1がインポートされていない場合、client2がPOSTform1にアクセスするとどうなりますか?そのような状況で私はmyScript1.pyが以前にインポートされたことを検出しなければならないと推測します。

答えて

1

あなたにリンクするレシピは、モジュールを作成し、sys.modulesに追加しtypes.ModuleTypeを使用することができ、2001年

からです:

from __future__ import print_function 

import types 

mymodule = types.ModuleType('mymodule', 'dynamically generated') 

code = """ 
def add(a, b): 
    return a + b 
""" 
exec code in mymodule.__dict__ 
# Python 3: exec(code, mymodule.__dict__) 
import sys 
sys.modules[mymodule.__name__] = mymodule 

今、あなたは別のモジュールでそれをインポートすることができるはずです。

import mymodule as m 

print(m.add(3, 4)) 

出力:

7 

未輸入のいくつかの種類:

del sys.modules['mymodule'] 
del globals()['m'] 
del globals()['mymodule'] 

使用あなたがしているモジュールで、それをインポートするために使用する名前に応じて、名前mまたはmymodule

:。

print(m.add(3, 4)) 

NameError: name 'm' is not defined 
関連する問題