模块中的条件导入

use*_*430 4 python matplotlib

我创建了一个模块modA,我在主程序中导入.根据我的主程序中发生的事情(它具有交互模式和批处理脚本模式),我希望modA本身可以使用TkAgg后端或ps后端导入matplotlib.有没有办法让我的主程序将信息传递给modA告诉它应该如何导入matplotlib?

澄清情况:

主要方案:

#if we are in interactive mode
#import modA which imports matplotlib using TkAgg backend
#else
#import modA which imports matplotlib using the ps backend
Run Code Online (Sandbox Code Playgroud)

模块modA:

#import matplotlib
#matplotlib.use('ps') or matplotlib.use('TkAgg') (how can I do this?)
Run Code Online (Sandbox Code Playgroud)

sas*_*llo 7

在您的模块中有一个功能来确定这一点.

import matplotlib

def setEnv(env):
    matplotlib.use(env)
Run Code Online (Sandbox Code Playgroud)

然后在你的程序中,你可以modA.setEnv('ps')根据if-else语句条件拥有或其他东西.

这里不需要条件导入(因为您只使用一个外部模块),但可以这样做:

if condition:
    import matplotlib as mlib
else:
    import modifiedmatplotlib as mlib
Run Code Online (Sandbox Code Playgroud)

有关在函数内导入模块的更多信息,请参阅:

Python:如何从函数进行全局导入

是否可以从函数内部导入全局范围(Python)?