当前位置: 首页 > 知识库问答 >
问题:

Python3:import和importlib之间的不同行为。导入模块?

谷善
2023-03-14

我无法动态导入一个模块,导入代码时没有问题,也不知道为什么。

我有以下几点:

> ls lib
__init__.py     main.py

初始化文件为空。以下作品:

> 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 "<stdin>", line 1, in <module>
NameError: name 'lib' is not defined

我确实读了Imglib留档以及几个答案在这里的SO,例如,如何导入一个模块在Python与importlib.import_module和动态导入一个方法在一个文件中,从一个字符串

但我错过了什么?

共有1个答案

薄欣怿
2023-03-14

import\u module返回导入的模块。因此,您需要为导入的模块指定一个名称,并像lib一样使用它。main

>>> lib_main = importlib.import_module("lib.main")
>>> lib_main.sayyay()
 类似资料:
  • 我有一个这样的目录: 我可以这样导入父模块: 那么,既然我已经有了父模块,那么获取子模块的最佳方法是什么?我已经尝试了,,等。 有什么建议吗? 谢谢

  • Example Package # example/__init__.py print('Importing example package') # example/submodule.py print('Importing submodule') Module Types # importlib_suffixes.py import importlib.machinery SUFFIXES

  • 主要内容:import 模块名 as 别名,from  模块名 import 成员名 as 别名使Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。 前面章节中,已经看到使用 import 导入模块的语法,但实际上

  • 我已经看到了从ES6中的另一个模块导入代码的以下两种变体: 和 其中是在文件中定义的ES6类 Module.js 这两种导入语句有什么区别?

  • 导入 Stylus支持字面@import CSS, 也支持其他Stylus样式的动态导入。 字面CSS 任何.css扩展的文件名将作为字面量。例如: @import "reset.css" 渲染如下: @import "reset.css" Stylus导入 当使用@import没有.css扩展,会被认为是Stylus片段(如:@import "mixins/border-radius")。 @i

  • 我试图使用clang和gcc交叉编译一个项目,但在使用时,我发现了一些奇怪的差异,例如。 现在,当涉及NAN时,我期望类型行为,但clang和gcc给出不同的结果: 当我使用它时,_mm_max_ps做了预期的事情。我尝试过使用,,但似乎没有效果。有什么想法可以让编译器之间的行为相似吗? 这里是锁销连接