インタープリタで実行できるにもかかわらず、関数を使っていくつかのものをインポートする際に問題があります。インタプリタを使用しても成功したにもかかわらず、関数を使用してexecを動的にインポートできない
私のスクリプトと同じディレクトリにあるフォルダAにinput.pyというファイルがあるとします。このファイルでは、変数 'B'を定義します。
B = 5
私は通訳に行くとき、次のコマンドは私にB
>>> import sys
>>> sys.path.append('A')
>>> exec('from inputs import *')
>>> print(B)
の正しい値を与えるしかし、私は別々のファイルにそのコードを移動した場合、「test.py」を言う:
import sys
def import_stuff(import_dir):
sys.path.append(import_dir)
exec('from inputs import *')
print(B)
そして、そのようインタプリタからそれを呼び出す:
>>> import test
>>> test.import_stuff('A')
NameErrorが発生し、Bが見つかりません。どうしたの?
あなたは 'input'の代わりに' inputs'をミスタイプしました。 – mFoxRU
ありがとうございます。しかし、これはスタックオーバーフローのコードを転送する際に作成された誤植で、私のオリジナルコードには存在しません。質問が修正されました。 – Aozturk
あなたのファイルは 'input.py'ではなく' inputs.py'という名前ですか? – mFoxRU