簡體   English   中英

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM