Pythonスクリプトでは、サブ関数からmain()へのモジュールのインポートを制御したいと思います。これは可能ですか?どうやって?サブ関数からモジュールをmain()にインポートするにはどうしたらいいですか?
なぜ:コマンドライン引数(argparseを使用)を処理し、ユーザー入力に基づいてモジュールをインポートするサブ関数があります。具体的には、matplotlib.pylabをインポートする前にmatplotlibのバックエンドを指定させる必要があります。しかし、私はその質問がより一般的な使用を持っていると思う。あなたは、グローバルを使用していないにもかかわらず、
def main():
args = handleCommandLine();
fig, ax = plt.subplots(1) # ERROR: plt not defined
# Snip ...
def handleCommandLine():
p = argparse.ArgumentParser()
p.add_argument('--backend', '-b', default=None, help='Specify plotting backend')
args = p.parse_args()
if args.backend != None:
matplotlib.use(args.backend) #Must occur before importing pyplot
import matplotlib.pyplot as plt #Must occur after setting backend, if desired
return args
は、なぜあなたはちょうど全体のファイルにインポートすることはできませんか? – Daenyth
@Daenyth:matplotlibはmatplotlib.pyplotからプロット関数をインポートする前にバックエンドを設定する必要がありますので、コード内で発生する必要があります –