Python的动态等价物';s";从<;模块>;进口<;符号>&引用;

Python的动态等价物';s";从<;模块>;进口<;符号>&引用;,python,dynamic,runtime,python-import,Python,Dynamic,Runtime,Python Import,在Python中,可以返回指定的包或模块(例如,pkg.mod)。然而,是否没有类似的方法可以从给定模块以与使用相同的方式动态导入特定的函数/类/等 例如,如果我尝试直接使用importlib.import\u模块(symbol\u name)导入符号,我只会得到一个ImportError: import importlib # Importing an entire module works fine imported_module = importlib.import_module("os

在Python中,可以返回指定的包或模块(例如,
pkg.mod
)。然而,是否没有类似的方法可以从给定模块以与使用相同的方式动态导入特定的函数/类/等

例如,如果我尝试直接使用
importlib.import\u模块(symbol\u name)
导入符号,我只会得到一个
ImportError:

import importlib

# Importing an entire module works fine
imported_module = importlib.import_module("os.path")
# This doesn't work
imported_symbol = importlib.import_module("os.path.basename")
执行上述代码将打印以下堆栈跟踪:

Traceback (most recent call last):
  File "/home/stackoverflow/dev/importtest.py", line 6, in <module>
    symbol = importlib.import_module("basename", "os.path.basename")
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'basename'
回溯(最近一次呼叫最后一次):
文件“/home/stackoverflow/dev/importset.py”,第6行,在
symbol=importlib.import\u模块(“basename”、“os.path.basename”)
文件“/usr/lib/python3.5/importlib/_init__.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第986行,在_gcd_import中
文件“”,第969行,在“查找”和“加载”中
文件“”,第956行,在“查找”和“加载”中解锁
ImportError:没有名为“basename”的模块

您必须使用
getattr
import\u module
返回的模块对象中查找所需的符号:

imported_module = importlib.import_module("os.path")
imported_symbol = getattr(imported_module, "basename")

导入模块
方法仅接受模块

您可以尝试以下方法来访问模块的方法/属性

imported_symbol = importlib.import_module("os.path").basename

itertools
没有导入模块()。您提到的链接包含
importlib.import\u模块
。谢谢;我修正了打字错误。不知道我是怎么做到的。。。