我试图访问文件中的一些函数,它位于我要使用它们的文件下面的一个目录中。我希望以一种动态的方式来做这件事,因为在运行之前我不知道用户想要使用哪些函数。在
例如,我将要求用户提供一个特定的场景,如果他们请求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
)。在
有什么想法吗?在
import_module
返回模块对象本身,您自己负责将其分配给您可以使用的名称。所以在你的情况下scenario1424 = importlib.import_module('scenarios.scenario1424')
您的子目录是否包含
__init__.py
文件?在Python使用
__init__.py
来确定目录是否是模块。在相关问题 更多 >
编程相关推荐