如何将字符串转换为变量以进行导入?蟒蛇

时间:2014-01-11 20:24:59

标签: python syntax import globals

我可以使用以下代码将字符串更改为变量,然后调用先前导入的库的函数。

>>> import sys
>>> x = 'sys'
>>> globals()[x]
<module 'sys' (built-in)>
>>> globals()[x].__doc__

如果没有先导入模块,我有一个变量字符串,但我不能使用与globals()[var]相同的import语法:

>>> y = 'os'
>>> globals()[y]
<module 'os' from '/usr/lib/python2.7/os.pyc'>
>>> import globals()[y]
  File "<stdin>", line 1
    import globals()[y]
                  ^
SyntaxError: invalid syntax

>>> z = globals()[y]
>>> import z
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named z

是否可以输入字符串并导入与字符串输入同名的库?如果是,怎么做?

@ndpu和@paulobu回答说__import__()允许字符串到库访问作为变量。但使用相同的变量名称而不是使用库的替代品是否存在问题? E.g:

>>> x = 'sys'
>>> sys = __import__(x)

3 个答案:

答案 0 :(得分:3)

大多数Python程序员更喜欢使用importlib.import_module而不是__import__

>>> from importlib import import_module
>>> mod = raw_input(":")
:sys
>>> sys = import_module(mod)
>>> sys
<module 'sys' (built-in)>
>>> sys.version_info # Just to demonstrate
sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)
>>>

您可以阅读importlib.import_module__import__ here的偏好。

答案 1 :(得分:2)

使用__import__功能:

x = 'sys'
sys = __import__(x)

答案 2 :(得分:1)

您正在寻找__import__内置功能:

__import__(globals()[y])

基本用法:

>>>math = __import__('math')
>>>print math.e
2.718281828459045

您还可以按照另一个答案和importlib.import_module文档中的建议查看__import__