![](/img/trans.png)
[英]ModuleNotFoundError when using importlib.import_module
[英]Unable to access module functions after using importlib.import_module
我試圖訪問文件中的一些函數,該文件位於我想要使用它們的文件下面的一個目錄中。 我希望以動態的方式做到這一點,因為我不會在運行時之前知道用戶想要使用哪些功能。
例如,我會詢問用戶特定場景,如果他們請求1424場景,我想訪問'scenario / scenario1424.py'文件中的函數。
我希望使用importlib.import_module(...)來做這件事,但我似乎無法讓它訪問這些功能,即使我似乎成功導入文件模塊。
目錄結構:
code/
- main.py
scenarios/
- __init__.py (empty)
- scenario1420.py
- scenario1421.py
- scenario1424.py
在場景文件中,我將有一堆定義的方法如下:
def run():
.......
def compute():
.......
我似乎能夠使用importlib.import_module('scenarios.scenario1424')
導入模塊importlib.import_module('scenarios.scenario1424')
<module 'scenarios.scenario1424' from 'scenarios/scenario1424.pyc'>
返回<module 'scenarios.scenario1424' from 'scenarios/scenario1424.pyc'>
importlib.import_module('scenarios.scenario1424')
<module 'scenarios.scenario1424' from 'scenarios/scenario1424.pyc'>
),但當我嘗試訪問如下函數時: scenario1424.run()
,我得到一個NameError( NameError: name 'scenario1424' is not defined
)。
有什么想法嗎?
import_module
返回模塊對象本身,您自己負責將其分配給您可以使用的名稱。 所以在你的情況下它會
scenario1424 = importlib.import_module('scenarios.scenario1424')
您的子目錄是否包含__init__.py
文件?
Python使用__init__.py
來確定目錄是否是模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.