首页 > 解决方案 > 从另一个目录动态导入文件

问题描述

我的输入是文件名列表(作为变量列表),我知道这些文件的路径。每个文件都有一个名为“test”的函数,我必须从每个文件中调用“test”函数。该路径不是我的工作目录。我需要能够动态导入这些文件。

我尝试使用 importlib,但出现以下错误:

import importlib

importlib.import_module("..\..\foo", package=None)
TypeError: the 'package' argument is required to perform a relative import for '..\\..\\x0coo'
importlib.import_module("C:\Users\Desktop\foo", package=None)
ModuleNotFoundError: No module named 'C:\\Users\\Desktop\\foo'

我将如何使用文件名和路径(都存储在变量中)在文件中执行函数?

标签: python-3.ximport

解决方案


我不确定这是最好的方法,但我通过首先将模块的路径添加到 sys.path 来解决这个问题:

>>import sys
>>sys.path.append('/path/to/module')
>>mod=importlib.import_module('my_module_name')

然后你可以像这样调用该模块中的函数

>>mod.myfunc(myargs)

或者,如果你在 python 字符串中有函数名,比如 func='myfunctionname' 你可以这样称呼它

>>mod.__dict__[func](args)

推荐阅读