Python3:import 和 importlib.import_module 之间的行为不同?

14 浏览
0 Comments

Python3:import 和 importlib.import_module 之间的行为不同?

我无法动态导入一个模块,但它在代码中导入没有问题,我不知道原因。

我有以下:

> ls lib
__init__.py     main.py

init文件为空。以下代码可以工作:

> python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lib.main
>>> lib.main.sayyay()
yay

以下代码无法工作:

> python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>> importlib.import_module("lib.main")
<module 'lib.main' from '/some/path/lib/main.py'>
>>> lib.main.sayyay()
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'lib' is not defined

我已经阅读了importlib文档以及一些在SO上的答案,例如如何使用importlib.import_module在Python中导入模块动态地从字符串导入文件中的方法

但我缺少什么?

admin 更改状态以发布 2023年5月20日
0
0 Comments

import_module 返回已导入的模块。因此,您需要给导入的模块一个名称,并像 lib.main 一样使用它。

>>> lib_main = importlib.import_module("lib.main")
>>> lib_main.sayyay()

0