使用后无法访问模块函数importlib.import_modu导入

2024-10-02 16:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图访问文件中的一些函数,它位于我要使用它们的文件下面的一个目录中。我希望以一种动态的方式来做这件事,因为在运行之前我不知道用户想要使用哪些函数。在

例如,我将要求用户提供一个特定的场景,如果他们请求1424场景,我希望能够访问“scenarios/scenario1424.py”文件中的函数。在

我想用importlib.import_模块(…),但我似乎无法让它允许我访问这些函数,即使我似乎成功地导入了文件模块。在

目录结构:

code/
  - main.py
  scenarios/
    - __init__.py (empty)
    - scenario1420.py
    - scenario1421.py
    - scenario1424.py

在一个场景文件中,我将有一组定义如下的方法:

^{pr2}$

我似乎能够使用importlib.import_module('scenarios.scenario1424')(返回<module 'scenarios.scenario1424' from 'scenarios/scenario1424.pyc'>)导入模块,但是当我试图访问一个函数,比如:scenario1424.run(),我得到了一个名称错误(NameError: name 'scenario1424' is not defined)。在

有什么想法吗?在


Tags: 模块文件函数用户pyimport目录方式
2条回答

import_module返回模块对象本身,您自己负责将其分配给您可以使用的名称。所以在你的情况下

scenario1424 = importlib.import_module('scenarios.scenario1424')

您的子目录是否包含__init__.py文件?在

Python使用__init__.py来确定目录是否是模块。在

相关问题 更多 >