2017-08-22 10 views
0

私は複数のスクリプトによって参照されるヘルパー関数を持っています。私が持っていたアイデアは、ヘルパー関数を使って多くのスクリプトが本質的にリストに追加できるということです。そして、ある時点で、それらのスクリプトのどれかがリストの要素にアクセスできるようになりました。スクリプト間変数の保存

一部のスクリプトでは従来の 'import'ステートメントを使用していますが、他のスクリプトでは 'importlib.import_module()'を使用していますが、2つの組み合わせで問題が発生しているようです。

私が抱えている問題は、ヘルパー関数が現在のスクリプトによって書き込まれた値のみを格納することです。例えば

私が持っている場合は、:

Project/ 
|-- helpers/ 
| |--store_value.py 
|-- framework/ 
| |runner/ 
| | |-- runner.py 
| |validator/ 
| | |-- validator.py 

そしてstore_value.pyに次のRunner.pyで

ALL_MSGS = [] 

def print_message(msg, display_messages=True): 
    """ 
    :param msg: [str] - String to be printed 
    :return: None - Work In Progress 
    """ 
    global ALL_MSGS 
    ALL_MSGS.append(msg) 
    if display_messages: 
     print(msg) 


def return_all_msgs(): 
    return ALL_MSGS 

を私が持っている:

import store_value, validator 
... 
store_value.print_message("Calling Validator") 
validator.validate() 
print(store_value.return_all_msgs()) 
... 

とバリデータを。 py:

importlib.import_module("store_value") 
... 
store_value.print_message("Running Validator") 
... 

その後、私は出力があることを期待する:

["Calling Validator", "Running Validator"] 

しかし、今、私は取得しています:

[] 
+1

スクリプトをどのように実行していますか? –

答えて

0

は、私が "runner.py"、 "validator.py" と「store_valueを置きます.py "と同じフォルダ内にあり、うまくいきました。 "store_value.pyは" あなたと同じであり、他のものは、次のとおり

runner.py:

import store_value, validator 

store_value.print_message("Calling Validator") 
validator.validate() 
print(store_value.return_all_msgs()) 

validator.py:

import store_value 

def validate(): 
    store_value.print_message("Running Validator") 

出力:

Calling Validator 
Running Validator 
['Calling Validator', 'Running Validator'] 
+0

あなたは正しい - これは私にとってもうまくいった。 runer.pyが使用するときに問題が発生していることが判明しました: しかし、validator.pyは以下を使用します: importlib.import_module( "store_value") – cdm

+0

問題を解決しましたか?はいの場合は答えを受け入れてください。そうでない場合は、質問を編集して詳細を入力してください。 – Miguel

関連する問題