0

我想为用户提供一个 python 脚本,该脚本将为他们导入一些模块,然后将导入的模块放到该级别可用的 python 解释器。我有一些我认为可能有效的代码,但它似乎没有:

module_list = ['module_a','module_b']

# Import our common modules
for module in module_list:
try:
    print "Importing: {0}".format(module)
    exec("import {0}".format(module))
except:
    print "FYI we failed importing {0}. It will not be available for you to use".format(module)              

因此,当脚本完成后,它将下降到用户可以执行的 python 模块:

>>> module_a.run()
4

3 回答 3

1

您可以使用code.InteractiveConsole()并传递locals包含控制台将在其中运行的本地上下文的字典。通过将模块存储在其中,您可以轻松地将它们提供给交互式 shell。

于 2013-04-18T06:20:09.040 回答
0

如果我是你,我不会这样做……但是

import imp

module_list = ['module_a','module_b']

for name in module_list:
    try:
        module_info = imp.find_module(name)
        globals()[name] = imp.load_module(name, *module_info)
    except:
        "Import error: %s" %name

保存上面的代码文件,例如并用switchimptest.py加载它,如-i

python -i imptest.py
于 2013-04-18T06:22:41.027 回答
0

反对我读过的许多关于触摸的评论的建议__main__,我做到了。

所以这是最终为我工作的代码:

module_list = ['module_a','module_b']

# Import our modules
for name in module_list:
     try:
         __import__(name)
        if name in sys.modules:
            setattr(__main__, name, sys.modules[name])
     except:
        print "FYI we failed importing {0}. It will not be available for you to use".format(name)
于 2013-04-20T06:01:23.320 回答